# coding=utf-8 from celery.task import periodic_task from datetime import timedelta, datetime from access.models import User, TrafSource, TrafTokenHistory @periodic_task(run_every=timedelta(minutes=20)) def check_prepo_delay(): # Проверка просроченых задач преподавателя for res in User.objects.filter(delay_date__lte=datetime.now(), in_role='T'): res.delay = False res.delay_description = '' res.delay_date = None res.save() @periodic_task(run_every=timedelta(minutes=1)) def check_online(): for user in User.objects.filter(status='ON', last_time__lte=datetime.now()-timedelta(minutes=10)): user.status = 'OFF' user.save() @periodic_task(run_every=timedelta(hours=1)) def check_traf_source(): for source in TrafSource.objects.filter(on=True).exclude(live_time=None): if source.token and source.token_start + timedelta(hours=source.live_time) < datetime.now(): source.on = False TrafTokenHistory.objects.create(token=source.token, source=source, live_time=source.live_time, date_start=source.token_start, date_end=datetime.now()) source.token = None source.token_start = None source.save() #@periodic_task(run_every=timedelta(minutes=1)) #def sync_users(): # for user in User.objects.filter(sync=False): # result = sent_sync_user(user) # if result: # user._set_synced()