Process Scheduler heroku addon for single 运行 scrypt 重启问题
Process Scheduler heroku addon for single running scrypt restarting issue
我每 5 小时使用 Process Scheduler 为 运行 宁我的单一脚本。并且在成功 运行 后重新启动。有人可以帮助我正确配置插件或告诉我我在哪里部署错误吗?非常感谢。
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 时间。
我每 5 小时使用 Process Scheduler 为 运行 宁我的单一脚本。并且在成功 运行 后重新启动。有人可以帮助我正确配置插件或告诉我我在哪里部署错误吗?非常感谢。
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 时间。