Приложение Heroku не выполняет запланированное задание в одночасье - PullRequest
0 голосов
/ 15 апреля 2019

Я сделал приложение для отслеживания скорости сайта / базы данных на Heroku. Он принимает URL-адреса, добавленные пользователем, и запускает их через API-интерфейс инструмента sitespeed (GTmetrix), сохраняя результаты в базе данных postgreSQL.

Используя APScheduler, я настроил приложение для запуска сценария в 1:00 ежедневно, чтобы выполнять вызовы API для всех URL-адресов.

Если я тестирую планировщик, настроив его на работу в рабочее время, я вижу, как он работает в журналах сервера, и данные сохраняются в базе данных.

Если я установлю время на 1:00, при проверке следующего утра я не найду никаких новых данных и активности в журнале сервера.

Последнее действие журнала всегда:

"heroku[web.1]: Process exited with status 0"

Итак, похоже, что мой планировщик не может активироваться, если веб-процесс остановлен.

Я не могу понять, как это повторить.

Файл приложения (фляга), файл API и файл расписания - все ссылки в файле proc:

PROCFILE:

web: gunicorn app:app
clock: python clock.py
work: python gt_legend.py (script that makes the api call)

Файл приложения и файл часов имеют назначенные dynos:

=== clock (Free): python clock.py (1)
clock.1: idle 2019/04/11 17:36:07 +0200

=== web (Free): gunicorn app:app (1)
web.1: idle 2019/04/11 17:36:07 +0200

clock.py:

from apscheduler.schedulers.blocking import BlockingScheduler

from gt_legend import gt_legend

sched = BlockingScheduler()

sched.add_job(gt_legend, 'cron', day_of_week='mon-sun', hour=1, minute=0)

sched.start()

Что мне нужно сделать, чтобы планировщик мог запускаться, когда приложение бездействует?

При необходимости можно добавить больше кода.

...