Я сделал приложение для отслеживания скорости сайта / базы данных на 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()
Что мне нужно сделать, чтобы планировщик мог запускаться, когда приложение бездействует?
При необходимости можно добавить больше кода.