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