示例#1
0
    async def flush_metrics_to_remote(url):
        fields = [
            User.user_id,
            User.ip_list,
            User.tcp_conn_num,
            User.upload_traffic,
            User.download_traffic,
        ]
        with db.atomic("EXCLUSIVE"):
            users = list(User.select(*fields).where(User.need_sync == True))
            User.update(
                ip_list=set(), upload_traffic=0, download_traffic=0, need_sync=False
            ).where(User.need_sync == True).execute()

        data = []
        for user in users:
            data.append(
                {
                    "user_id": user.user_id,
                    "ip_list": list(user.ip_list),
                    "tcp_conn_num": user.tcp_conn_num,
                    "upload_traffic": user.upload_traffic,
                    "download_traffic": user.download_traffic,
                }
            )
        async with httpx.AsyncClient() as client:
            await client.post(url, json={"data": data})
示例#2
0
 async def __report_user_stats(self):
     """
     上报用户数据
     :return:
     """
     users = User.select().where(User.is_deleted == False)
     User.update(conn_ip_set=set(),
                 upload_traffic=0,
                 download_traffic=0,
                 total_traffic=0).where(User.is_deleted == False)
     await self.api.report_user_stats(user_data=users)