# 修复定时任务执行逻辑

This commit is contained in:
xianfux 2022-08-14 12:31:48 +08:00
parent f4a45bd2ea
commit 26325ff868
1 changed files with 19 additions and 2 deletions

View File

@ -4,11 +4,18 @@ from functools import reduce
from datetime import datetime, time, timedelta from datetime import datetime, time, timedelta
from django.db.models import Max from django.db.models import Max
from celery import task 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 DeviceCount
from counter.models import DeviceInfo as D1 from counter.models import DeviceInfo as D1
from mosquito.models import MosqPostStatistic, DevicePostStatistic, DeviceInfo, Org from mosquito.models import MosqPostStatistic, DevicePostStatistic, DeviceInfo, Org
def max_count(x, y): def max_count(x, y):
if x.count > y.count: if x.count > y.count:
return x return x
@ -23,6 +30,8 @@ def shortest_date(date, date_list):
def fill_date(ret=None, tz=None): def fill_date(ret=None, tz=None):
date_list = [k for k in ret] date_list = [k for k in ret]
if len(date_list) == 0:
return None
min_date = min(date_list) min_date = min(date_list)
max_date = datetime.now(tz).date() max_date = datetime.now(tz).date()
days = (max_date - min_date).days 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') qs = DeviceCount.objects.raw('select id, date(data_time) as date from device_count group by date')
if qs: if qs:
tz = pytz.timezone("UTC") 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: for item in device_list:
device_container[item] = set() device_container[item] = set()
for q in qs: for q in qs:
@ -83,6 +92,8 @@ def update_daily_statistic():
org = device.org org = device.org
container = dict(device_container[device_id]) container = dict(device_container[device_id])
full_daily_ret = fill_date(container, tz=pytz.timezone("UTC")) 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 = [k for k in full_daily_ret]
_date_list.sort() _date_list.sort()
@ -150,3 +161,9 @@ def update_mosq_device_info():
for device_id in x: for device_id in x:
DeviceInfo.objects.create(device_id=device_id, org=default_org) DeviceInfo.objects.create(device_id=device_id, org=default_org)
return list(x) return list(x)
if __name__ == '__main__':
# a, b = get_daily_statistic()
# print(a, b)
update_daily_statistic()