我想了解使用capistrano重启延迟作业工人的最佳实践。 我有一堆处理长时间作业(长达10分钟)的工人。
在部署过程中,我遇到了两种情况 -
1) 在部署之前停止延迟作业工人:重启任务,并在部署:重启任务后再次启动它们。
但在这种情况下,直到延迟作业完成,我的应用程序才会重新启动(这可能没问题 - 但是cap部署脚本会一直等待作业完成并停止所有工人,然后才继续进行应用程序重新启动任务)。
2) 我还尝试在重启任务后停止/启动延迟作业工人 - 但这会导致各种问题,其中任务将被停止而不等待,但延迟作业表中仍列出它们并分配给一个不存在的PID的工人!
还有其他选择吗? 还是像场景1中提到的那样被迫等待?
非常感谢。
编辑:我刚意识到,在场景1中..它不会等待!停止任务将强制终止我的工人,即使它没有完成!
在部署过程中,我遇到了两种情况 -
1) 在部署之前停止延迟作业工人:重启任务,并在部署:重启任务后再次启动它们。
但在这种情况下,直到延迟作业完成,我的应用程序才会重新启动(这可能没问题 - 但是cap部署脚本会一直等待作业完成并停止所有工人,然后才继续进行应用程序重新启动任务)。
2) 我还尝试在重启任务后停止/启动延迟作业工人 - 但这会导致各种问题,其中任务将被停止而不等待,但延迟作业表中仍列出它们并分配给一个不存在的PID的工人!
还有其他选择吗? 还是像场景1中提到的那样被迫等待?
非常感谢。
编辑:我刚意识到,在场景1中..它不会等待!停止任务将强制终止我的工人,即使它没有完成!
** [out] delayed_job: trying to stop process with pid 9630...
** [out] delayed_job: process with pid 9630 won't stop, we forcefully kill it...
** [out]
** [out] delayed_job: process with pid 9630 successfully stopped.