首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cloud66和DigitalOcean部署的Rails不影响当前运行的侧翼进程

Cloud66和DigitalOcean部署的Rails不影响当前运行的侧翼进程
EN

Stack Overflow用户
提问于 2017-12-15 11:17:09
回答 2查看 179关注 0票数 1

我用Ruby(2.4.1)创建了Rails(版本5)应用程序。我在部署过程中使用DigitalOcean实例和Cloud66。我正在使用Sidekiq作为背景处理。我的每一次部署都会从sidekiq扼杀一些长时间运行的进程,而这不会再试一次。sidekiq中的每个任务都更重要,所以我想在不影响这些任务的情况下进行部署。是否有任何方法可以在不影响目前运行的进程的情况下进行部署?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-21 10:47:55

最终我找到了解决办法。

在开始部署之前,我使用了预部署钩子来发送TSTP,然后发送术语来优雅地关闭sidekiq进程。因此,在开始部署之前,所有的sidekiq进程都将被优雅地杀死,这些作业将使用由最新部署创建的sidekiq进程来执行。

TSTP --这将停止从redis接收即将到来的任务。

用法:例如:kill -TSTP <sidekiq-processid>

<>TERM --这将在-t timeout_value选项中提到的时间内终止进程,假设运行作业未完成,则侧翼进程将被终止,作业将再次推入队列,作业将使用相同的参数再次执行。

注意:在从一开始就再次执行同一任务没有问题时使用此方法。

票数 1
EN

Stack Overflow用户

发布于 2017-12-15 11:41:33

Sidekiq支持优雅的关闭,这意味着它为运行的作业提供了一段时间的完成。默认情况下,我相信大概是30秒。

您可以在config/sidekiq.yml中调整等待时间。

代码语言:javascript
复制
:timeout: 120

有关这方面的更多信息:https://github.com/mperham/sidekiq/wiki/Signals

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47831256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档