我在Heroku上制作了一个sitespeed跟踪器/数据库应用程序。它接受用户添加的网址,并通过sitespeed工具的api(GTmetrix)运行它们,并将结果存储在postgreSQL数据库中。
使用APScheduler,我将应用程序设置为每天凌晨1点运行脚本,以对所有网址进行api调用。
如果我通过将调度程序设置为在办公时间内运行来对其进行测试,则可以在服务器日志中看到它正在运行,并且数据已保存到数据库中。
如果将时间设置为凌晨1点,当我第二天早上检查时,服务器日志中没有发现新数据,也没有活动。
上一个日志活动始终是:
"heroku[web.1]: Process exited with status 0"
因此,如果Web进程已停止,看来我的调度程序无法激活。
我不知道该如何解决。
proc文件中引用了应用(烧瓶)文件,api文件和计划文件:
Procfile:
web: gunicorn app:app
clock: python clock.py
work: python gt_legend.py (script that makes the api call)
app文件和时钟文件分配了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()
我需要做些什么才能允许调度程序在应用程序空闲时启动?
可以根据需要添加更多代码。