i using django rq scheduler
scheduled_tasks.py
from redis import redis rq_scheduler import scheduler datetime import datetime scheduler = scheduler(connection=redis()) # scheduler "default" queue # scheduler = django_rq.get_scheduler("default") = datetime.now() start = now.replace(hour=8, minute=00, second=0, microsecond=0) scheduler.schedule( scheduled_time=start, # time first execution, in utc timezone func=broadcast_approved_jobs, # function queued interval=86400 # time before function called again, in seconds repeat=none # repeat number of times (none means repeat forever) )
i need run scheduler once in day.
but sending mails repeatedly. think scheduler calling broadcast_approved_jobs multiple times. idea why?
(take 2) function i'm using, not written me, forget found it. if scheduler being called multiple times, @ least remove existing jobs.
def schedule_once(scheduled_time, func, args=none, kwargs=none, interval=none, repeat=none, result_ttl=none, timeout=none, queue_name=none): """ schedule job once or reschedule when interval changes """ if not func in functions or not interval in functions[func] \ or len(functions[func]) > 1: # clear scheduled jobs function map(scheduler.cancel, filter(lambda x: x.func == func, jobs)) # schedule new interval scheduler.schedule(scheduled_time, func, interval=interval, repeat=repeat) schedule_once( scheduled_time=datetime.utcnow(), # time first execution, in utc timezone func=readmail, # function queued interval=120, # time before function called again, in seconds repeat=0 # repeat number of times (none means repeat forever) )
Comments
Post a Comment