我有一个worker在做一些全天候的处理。然而,有时代码会崩溃,需要重新启动(即使我捕捉到异常,我也必须重新启动worker才能让它工作)。
当这种情况发生时,或者我做错了什么而这根本不应该发生时,你该怎么办?你的dynos/worker崩溃了还是只有我一个人崩溃了?
谢谢
发布于 2011-06-14 23:03:10
Heroku应该在每次worker崩溃时重新启动它。据我所知,你不需要选择或配置任何东西。无论你的工作是什么:工作任务一旦失败就会立即执行。
如果您严重依赖于web应用程序中的后台作业。您可以创建一个rake任务来查找要更新的最后一条记录,并执行一个后台作业来更新它。或者可能自动执行rake任务,以查找自上次崩溃以来需要更新的其余记录。
或者,您可以按照this article中所述(使用delayed_job)手动强制重新启动worker:
heroku workers 0;
heroku workers 1;或者,您可以通过执行以下操作(在this article中提到)重新启动特定的工作进程:
heroku restart worker.1顺便说一下,试试1.9 stack。在执行此操作之前,请确保您的应用程序与1.9.2兼容。希望那里的崩溃不那么频繁:
heroku stack:migrate bamboo-mri-1.9.2在这种情况下,这些问题仍然会出现。最好联系Heroku支持部门。他们对自己所做的事情反应非常灵敏。
发布于 2014-01-17 02:16:17
用于重新启动特定heroku web worker的最新命令(2014):
heroku ps:restart web.1(在雪松堆栈上测试)
发布于 2014-03-27 14:37:16
有时,例如在DB崩溃的情况下,worker可能不会自动重新启动。你需要这样做。
heroku重启web.1
这对我很管用。
https://stackoverflow.com/questions/6342149
复制相似问题