【问题标题】:Passenger Kills Background Workers for Delayed Job乘客因工作延误而杀死后台工作人员
【发布时间】:2016-02-07 04:06:48
【问题描述】:

我在 Linux 虚拟机上运行 Rails 4.2。我使用 Nginx 作为我的 Web 服务器,Passenger 作为我的 Web 应用程序服务器。

我的应用程序运行没有任何问题。最近,我开始使用延迟作业来发送电子邮件。这很好用,但问题是我的后台工作进程由于某种原因被杀死,所以电子邮件没有在应该发送的时候发送出去。在我通过 SSH 连接到我的服务器后,我运行以下命令来启动一个后台工作者:

rake jobs:work &

这会触发后台进程并将rake 命令与终端实例分离,因此我希望该进程继续运行。该进程似乎被Passenger杀死,因为几分钟后我的后台任务不会执行。

如何阻止Passenger杀死我的后台任务?

【问题讨论】:

  • 本着 Gaming.SE 的 tradition of alarming titles 的精神,我希望这能成为热门网络问题。
  • 关于如何使标题不那么令人震惊的任何建议?我实际上需要在两个小时内得到答案,所以你可以说这是一个令人担忧的情况,但幸运的是我想通了!
  • 哦,我觉得这个标题很好 - 只是在上下文中听起来很有趣,就像游戏中的那些(他们试图故意这样做)。
  • 哈哈好的,谢谢!我查看了您从 Gaming SE 链接的问题 - 太搞笑了!

标签: nginx passenger delayed-job ruby-on-rails-4.2


【解决方案1】:

我想通了!我决定改为运行delayed_job 进程。在运行rake jobs:work & 时,它启动了一个Ruby 进程,Passenger 将其杀死。不过,Passenger 似乎并没有杀死其他进程。

Delayed Job documentation 之后,我将以下内容添加到我的Gemfile

gem 'daemons'

然后我在我的虚拟机中运行了以下命令:

RAILS_ENV=production bin/delayed_job start

我一开始收到权限错误,所以脚本没有运行。为了解决这个问题,我将delayed_job 脚​​本设置为具有完整的读/写/执行权限:

chmod +x bin/delayed_job

我离开了大约 10 分钟,然后回来了,该过程仍在运行并发送电子邮件!

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多