Процесс APScheduler не работает с настройкой heroku/django
У меня проблемы с настройкой процесса APScheduler на Heroku в среде Django.
Я создал команду управления, чтобы у моих заданий apscheduler был доступ к моей среде Django.
имя_приложения / Управление / Команды / scheduler.py
class Command(BaseCommand):
"""
Management command for APScheduler
"""
def handle(self, *args, **kwargs):
sched = Scheduler()
@sched.cron_schedule(day_of_week='mon-sun', hour=0, minute=0)
def a_weekly_job():
run_some_code()
sched.start()
print "Scheduler started"
while True:
pass
Я настроил свой Procfile следующим образом (для процесса планировщика)
scheduler: python manage.py scheduler
Однако при развертывании приложения с помощью процесса планировщика появляется следующее предупреждающее сообщение, и моя работа не запускается:
WARNING:apscheduler.scheduler:Run time of job "a_weekly_job" (trigger: cron[day_of_week='mon-sun', hour='23', minute='25'], next run at: 2013-09-24 23:25:00)" was missed by 0:00:07.261174
Как мне заставить работать работу?
2 ответа
Добавить файл clock.py:
sched = Scheduler()
@sched.cron_schedule(day_of_week='mon-sun', hour=0, minute=0)
def a_weekly_job():
run_some_code()
sched.start()
print "Scheduler started"
while __name__ == '__main__':
pass
PROCFILE:
web: ...
clock: python clock.py --loglevel=INFO
Используйте подпроцесс для запуска "python manage.py scheduler":
import subprocess
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
@sched.scheduled_job('cron', day_of_week='mon-sun', hour=0, minute=0)
def scheduler_sample():
subprocess.call('python manage.py scheduler'), shell=True, close_fds=True)
sched.start()