Heroku应用程序无法在一夜之间运行计划任务

时间:2019-04-15 15:05:44

标签: python heroku apscheduler

我在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()

我需要做些什么才能允许调度程序在应用程序空闲时启动?

可以根据需要添加更多代码。

0 个答案:

没有答案