Процесс 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()
Другие вопросы по тегам