Process Scheduler heroku addon for single 运行 scrypt 重启问题

Process Scheduler heroku addon for single running scrypt restarting issue

我每 5 小时使用 Process Scheduler 为 运行 宁我的单一脚本。并且在成功 运行 后重新启动。有人可以帮助我正确配置插件或告诉我我在哪里部署错误吗?非常感谢。

The script.

Heroku 日志:

2018-08-03T22:06:03.958367+00:00 app[api]: Scaled to worker@0:Free by user 2018-08-04T02:04:07.885524+00:00 app[api]: Scaled to worker@1:Free by user 2018-08-04T02:04:11.638256+00:00 heroku[worker.1]: Starting process with command `python youtube_vk_poster.py` 2018-08-04T02:04:12.419358+00:00 heroku[worker.1]: State changed from starting to up 2018-08-04T02:04:14.723794+00:00 app[worker.1]: Getting videos for UCmxD8F_4PU22QXFVTAEzN1g, count = 91 2018-08-04T02:04:14.867784+00:00 app[worker.1]: Getting videos for UC4ec8uCUuxt08wm9kmmw6XQ, count = 16 2018-08-04T02:04:17.794132+00:00 app[worker.1]: Getting videos for UCEVZlBNhqCzDwjYTW_gXNBw, count = 399 2018-08-04T02:04:18.388777+00:00 app[worker.1]: Getting videos for UC_wfigKXaw5cHFUIgLve1Vg, count = 96 2018-08-04T02:04:19.357442+00:00 app[worker.1]: Getting videos for UCUMZybDJyqZYrj9eBx5DaSQ, count = 171 2018-08-04T02:04:20.596631+00:00 app[worker.1]: Retriving all videos from vk 2018-08-04T02:04:24.759649+00:00 app[worker.1]: Today we posted 0 videos 2018-08-04T02:04:24.775320+00:00 app[worker.1]: Posting: https://www.youtube.com/watch?v=oxfnR8tRQ9w 2018-08-04T02:04:26.209494+00:00 heroku[worker.1]: Process exited with status 0 2018-08-04T02:04:26.222333+00:00 heroku[worker.1]: State changed from up to crashed 2018-08-04T02:04:26.224327+00:00 heroku[worker.1]: State changed from crashed to starting 2018-08-04T02:04:30.004397+00:00 heroku[worker.1]: Starting process with command `python youtube_vk_poster.py` 2018-08-04T02:04:30.688651+00:00 heroku[worker.1]: State changed from starting to up

我认为 Heroku Scheduler 更适合这里。根据日志输出(具体来说,"State changed from up to crashed"),我认为 "Process Scheduler" 希望您的脚本保持活动状态,直到 调度程序 终止它,很可能是通过 scale API 调用(注意日志以 API 调用开始,以从 0 扩展到 1 个实例)

如果您的脚本自行退出,调度程序会认为它已崩溃并尝试重新启动它。相比之下,Heroku Scheduler 期望任务在突发模式下 运行 - 运行 完成并退出。如果您希望脚本花费的时间超过 10 分钟,事情可能会变得更加复杂(不是硬性限制,而是调度程序文档中的建议)

可以 坚持使用 Process Scheduler 并简单地让它让你的脚本永远不会退出 - 将对 main() 的调用放在 while True: 循环中,使用满足您需要的可选 time.sleep() 间隔。来自 Process Scheduler 的 scale 调用将使用信号终止进程。但是,与 Heroku Scheduler 方法相比,您将花费更多的 dyno 时间。