From 26325ff868ab9fc34dc7a0b6872ede32bcbaa799 Mon Sep 17 00:00:00 2001 From: xianfux Date: Sun, 14 Aug 2022 12:31:48 +0800 Subject: [PATCH] =?UTF-8?q?#=20=E4=BF=AE=E5=A4=8D=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mosquito/tasks.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/apps/mosquito/tasks.py b/apps/mosquito/tasks.py index 0e9efab..793cd91 100644 --- a/apps/mosquito/tasks.py +++ b/apps/mosquito/tasks.py @@ -4,11 +4,18 @@ from functools import reduce from datetime import datetime, time, timedelta from django.db.models import Max from celery import task + + +import os +import django +pwd = os.path.dirname(os.path.realpath(__file__)) +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mosqkiller.settings") +django.setup() + from counter.models import DeviceCount from counter.models import DeviceInfo as D1 from mosquito.models import MosqPostStatistic, DevicePostStatistic, DeviceInfo, Org - def max_count(x, y): if x.count > y.count: return x @@ -23,6 +30,8 @@ def shortest_date(date, date_list): def fill_date(ret=None, tz=None): date_list = [k for k in ret] + if len(date_list) == 0: + return None min_date = min(date_list) max_date = datetime.now(tz).date() days = (max_date - min_date).days @@ -40,7 +49,7 @@ def get_daily_statistic(enable_container=False): qs = DeviceCount.objects.raw('select id, date(data_time) as date from device_count group by date') if qs: tz = pytz.timezone("UTC") - device_list = {item.device_id for item in DeviceCount.objects.distinct()} + device_list = {item.device_id for item in DeviceInfo.objects.distinct()} for item in device_list: device_container[item] = set() for q in qs: @@ -83,6 +92,8 @@ def update_daily_statistic(): org = device.org container = dict(device_container[device_id]) full_daily_ret = fill_date(container, tz=pytz.timezone("UTC")) + if full_daily_ret is None: + continue _date_list = [k for k in full_daily_ret] _date_list.sort() @@ -150,3 +161,9 @@ def update_mosq_device_info(): for device_id in x: DeviceInfo.objects.create(device_id=device_id, org=default_org) return list(x) + + +if __name__ == '__main__': + # a, b = get_daily_statistic() + # print(a, b) + update_daily_statistic() \ No newline at end of file