如何在 Heroku 上安全关闭 Sidekiq

How to safely shut down Sidekiq on Heroku

我想我需要在这里进行完整性检查,因为如果我想防止任何 sidekiq 作业过早结束,Heroku Redis 应该为我处理吗?

当我想将新更改推送到生产站点时,我将应用程序置于维护模式:heroku maintenance:on。现在,当我这样做时,运行 heroku ps 我可以看到我的 web 进程和我的 worker(即 sidekiq)仍在运行(有道理,因为它只是为了防止用户有权访问网站)。

如果我用这样的命令关闭 worker dyno:heroku ps:stop worker 在站点处于维护模式之后,这会在它关闭之前安全地停止 sidekiq worker 吗?此外,来自 Sidekiq 的文档:

https://github.com/mperham/sidekiq/wiki/Deployment#heroku

它提到了一个 -t N 开关,其中 N 是一个以秒为单位的数字,但 Heroku 有一个硬性限制,允许进程在 30 秒内自行关闭。我是否正确,如果我用 heroku 命令停止 worker 进程,它会给任何当前 运行ning 作业 N 秒,然后再给它一个 SIGTERM 信号?

如果没有,我需要采取哪些额外步骤来确保 Sidekiq 已安全关闭?

听起来你很好。当您调用 ps:stop 时,Heroku 会发送 SIGTERM。发送 SIGTERM 告诉 Sidekiq 在 N 秒内关闭。你的 worker dyno 应该会在 30 秒内安全降落。