如何持续部署长时间运行的作业

Kal*_*erg 5 deployment ruby-on-rails background-process delayed-job sidekiq

我们目前使用delayed_job和rails来管理系统中一些长时间运行的作业。其中一些作业可能需要几个小时才能运行,但我们也喜欢频繁部署,通常一天多次。此设置的问题在于,我们必须在部署期间重新启动delayed_job以获取代码更改,以便使用最新代码处理任何新作业。

我们找到的解决方案是,对于任何需要运行一段时间以上的作业,我们会分叉延迟的作业,以便它立即返回,并且分叉的进程会处理该工作。这样,部署可以重新启动所有延迟的作业进程,而长时间运行的“作业”将继续运行,直到它作为孤立进程完成。

我们已经研究过 sidekiq,但看起来在尝试部署新代码时我们也会遇到同样的问题。

是否有人开发了他们推荐的解决方案来处理跨多个部署的长时间运行的后台进程?