Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Heroku上使用APScheduler调度cron作业?_Python_Heroku_Cron_Sendgrid_Apscheduler - Fatal编程技术网

Python 如何在Heroku上使用APScheduler调度cron作业?

Python 如何在Heroku上使用APScheduler调度cron作业?,python,heroku,cron,sendgrid,apscheduler,Python,Heroku,Cron,Sendgrid,Apscheduler,我正在尝试使用Heroku上的APScheduler和SendGrid创建用于发送电子邮件的cron作业 尽管add_job方法调用似乎执行正确,但我得到了以下错误 下面是heroku的日志 2016-09-11T22:33:37.776867+00:00 heroku[clock.1]: State changed from crashed to starting 2016-09-11T22:33:40.672563+00:00 heroku[clock.1]: Starting proces

我正在尝试使用Heroku上的APScheduler和SendGrid创建用于发送电子邮件的cron作业

尽管add_job方法调用似乎执行正确,但我得到了以下错误

下面是heroku的日志

2016-09-11T22:33:37.776867+00:00 heroku[clock.1]: State changed from crashed to starting
2016-09-11T22:33:40.672563+00:00 heroku[clock.1]: Starting process with command `python clock.py`
2016-09-11T22:33:41.353373+00:00 heroku[clock.1]: State changed from starting to up
2016-09-11T22:33:43.527949+00:00 app[clock.1]: created background scheduler
2016-09-11T22:33:43.528848+00:00 app[clock.1]: started background scheduler
2016-09-11T22:33:43.572751+00:00 app[clock.1]: added cron job
2016-09-11T22:33:43.585801+00:00 app[clock.1]: Exception in thread APScheduler (most likely raised during interpreter shutdown):
2016-09-11T22:33:43.585807+00:00 app[clock.1]: Traceback (most recent call last):
2016-09-11T22:33:43.585808+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/threading.py", line 801, in __bootstrap_inner
2016-09-11T22:33:43.585810+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/threading.py", line 754, in run
2016-09-11T22:33:43.585827+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/apscheduler/schedulers/blocking.py", line 29, in _main_loop
2016-09-11T22:33:43.585829+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/threading.py", line 614, in wait
2016-09-11T22:33:43.585848+00:00 app[clock.1]:   File "/app/.heroku/python/lib/python2.7/threading.py", line 364, in wait
2016-09-11T22:33:43.585851+00:00 app[clock.1]: <type 'exceptions.ValueError'>: list.remove(x): x not in list
2016-09-11T22:33:43.695569+00:00 heroku[clock.1]: Process exited with status 0
2016-09-11T22:33:43.719265+00:00 heroku[clock.1]: State changed from up to crashed
这是我的文件

clock: python clock.py
这是我的requirements.txt文件

APScheduler==3.1.0
sendgrid==3.4.0

有人能告诉我我做错了什么吗?

您启动了后台调度程序,但随后允许主线程退出,这也会退出时钟进程。这就是
BlockingScheduler
存在的全部原因。你没有读过Heroku的书吗?

谢谢你让我参考这些说明。当我第一次尝试这些指令时,我的时钟进程一直以SIGTERM退出,没有明显的原因。我认为这意味着我做了一些不正确的事情,这就是为什么我想改变调度器的类型。现在我知道时钟进程在没有时间执行cron作业时退出。你对此很确定吗?我并没有经常使用Heroku,但这听起来有点奇怪,至少如果涉及APScheduler的话。进程不应自行终止。使用BlockingScheduler是否确实阻止dyno睡眠?
APScheduler==3.1.0
sendgrid==3.4.0