【问题标题】:Daemoninsing a rake task守护一个 rake 任务
【发布时间】:2012-03-22 06:42:34
【问题描述】:

我有一个在 rails 环境下运行 mailman 的 rake 任务。

我想确保 rake 任务始终通过守护进程运行。

我的 rake 任务是rake incoming_mail

我将如何去守护它?

【问题讨论】:

  • 你用的是linux还是osx?您希望此守护程序具有什么样的功能?
  • daemon stopdaemon start

标签: ruby-on-rails rake daemon


【解决方案1】:

如果是docker镜像那么肯定是linux所以,

rake incoming_mail &

应该通过登录 pod 并运行 rake 任务来完成这项工作

除此之外,放

Rails.logger.info 在您的代码中,以便将日志推送到应用程序日志文件或

GCloud Stackdriver 或任何日志框架。

【讨论】:

    【解决方案2】:

    如果你使用 Ruby 1.9+,你可以使用Process.daemon。 Ruby http://www.jstorimer.com/blogs/workingwithcode/7766093-daemon-processes-in-ruby

    【讨论】:

      【解决方案3】:

      如果您使用的是 linux,您可以考虑使用 start-stop-daemon。

      start-stop-daemon -S --pidfile /var/run/incoming_mail.pid -u rails_user -d /path/to/your/rails/app -b -a "rake incoming_mail"

      为了稍后优雅地终止进程,您可以使用大多数参数,但将 -S 替换为 -K。

      与往常一样,您可以通过阅读手册页找到有关 start-stop-daemon 的更多信息。

      【讨论】:

        【解决方案4】:

        在 linux 中,为了在后台运行进程,您可以在命令末尾添加 &。所以

        rake incoming_mail &

        应该为你做这些工作。

        【讨论】:

        • 如何在 rails 应用启动后确保 rake 任务正在运行。
        • 这个解决方案只是在后台运行它,这很好,直到你想确保它已经启动并且正常工作。
        猜你喜欢
        • 2014-12-03
        • 2010-12-25
        • 2011-07-20
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        相关资源
        最近更新 更多