【问题标题】:How to autostart Rails delayed jobs?如何自动启动 Rails 延迟作业?
【发布时间】:2012-03-21 10:36:30
【问题描述】:

我正在使用delayed job 创建作业队列,例如“邮件程序”

为此,我必须运行它:

$ RAILS_ENV=development QUEUE=mailer rake jobs:work

但是如果服务器崩溃并重新启动,我需要worker自动重新开始运行。

推荐的处理方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 delayed-job


    【解决方案1】:

    您需要使用第三方服务如monit/bluepill/god/upstart 来观察进程并重新启动它。我建议使用工头和新贵的组合。见这里:http://blog.daviddollar.org/2011/05/06/introducing-foreman.html

    【讨论】:

      【解决方案2】:

      前段时间,我为 DelayedJob 写了一个patch,以便在开发模式下为每个作业重新加载类。同样的补丁也应该可以满足您的要求。

      【讨论】:

      • 这不是问题 :-) 但是,如果您需要重新加载行为,这里有一个 DJ 插件:github.com/Viximo/delayed_job-rails_reloader
      • @betamatt,我的解决方案将在HappyDeveloper 想要在开发模式下运行他的服务器和工作人员时工作。在开发模式下,补丁会为每个请求重新加载类。
      【解决方案3】:

      如果您有这样的监控工具,betamatt 的方法绝对是一种方法。

      另一种方法是将脚本添加到操作系统的启动中,该脚本在具有必要权限的用户下运行RAILS_ENV=development QUEUE=mailer rake jobs:work 命令。

      这是一个如何在Ubuntu using Upstart 上执行此操作的示例,但是如果您查找类似的init.d 方法,或者与您的服务器操作系统相关的任何方法,您会找到其他方法。基本上,您要查找的是“如何在启动时运行脚本 [您的操作系统名称]”,然后将您的命令包装在可执行脚本中。

      【讨论】:

        【解决方案4】:

        我的应用程序遇到了同样的问题。所以我写了一个每分钟运行的 rake 任务(作为 cron 作业)。当延迟作业开始时,它将在临时文件夹中创建一个 .pid 文件。我用它来检查是否存在延迟的作业流程。如果文件不存在,我通过代码运行控制台命令。

        delayed_job_status = File.file?("./tmp/pids/delayed_job.pid")

        • 这将检查进程是否存在。如果没有响应转到下一条语句

        ./bundle exec script/delayed_job start production

        • 这将启动延迟作业

        【讨论】:

          【解决方案5】:


          我的解决方案是在用户家中创建 bash 脚本
          “delayed_job_startup.sh”
          其中包含

              #!/bin/bash
              cd /home/deploy/project/current/
              RAILS_ENV=production bin/delayed_job start
          

          在文件 /etc/rc.local 我从我的用户运行这个脚本

              su -s /bin/bash - deploy /home/deploy/delayed_job_startup.sh
          

          【讨论】:

            猜你喜欢
            • 2010-12-15
            • 2017-02-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-24
            • 1970-01-01
            • 2012-06-16
            • 1970-01-01
            相关资源
            最近更新 更多