【问题标题】:How to start Delayed Job with Ubuntu?如何使用 Ubuntu 启动延迟作业?
【发布时间】:2017-02-04 19:24:51
【问题描述】:

我在 Rails 5 应用程序上使用 Delayed Job 作为 Active Job 的队列后端,但我不知道如何在启动后在 Ubuntu 14.04 上启动工作程序。我应该将rails jobs:work 包装到 Bash 脚本中吗?我如何让它自动启动?还是最好使用bin/delayed_job

如何在启动时启动延迟作业?

【问题讨论】:

    标签: ruby-on-rails ubuntu ruby-on-rails-4 delayed-job


    【解决方案1】:

    您使用的操作系统并不重要(只要不是 Windows :D)。

    开始处理的命令是:

    bundle exec rake jobs:work
    

    重启delayed_job的命令是:

    RAILS_ENV=production script/delayed_job restart
    

    查看gems README 了解更多信息。

    编辑

    (根据评论)

    你可以在用户家start_delayed_jon.sh创建一些bash脚本。

    类似的东西:

    #!/bin/bash
    cd /path/to/your/project/directory/
    RAILS_ENV=development bundle exec rake jobs:work
    

    并在 /etc/rc.local 中运行它:

    su -s /bin/bash - deploy /path/to/your/project/directory/start_delayed_jon.sh
    

    【讨论】:

    • 是的,这就是我在我的开发机器上启动它的方式,但是如何让 Ubuntu 在服务器启动时自动启动它?
    • @ilovebigmacs 请让我知道我的回答是否有帮助,或者我应该删除它
    • 感觉不是一种可靠的方法。等待更多答案。
    • @ilovebigmacs 在系统启动时触发脚本以启动某些东西听起来不像是在系统启动时启动某些东西的稳健方式? :)
    • 是的。我会接受答案并更好地重新提出。意思是“应该如何正确完成?”。如果您使用它,您将永远不知道作业是失败还是停止工作。每隔一小时左右重新启动一次 crontab 似乎更好。
    【解决方案2】:

    使用Whenever Gem,您可以设置一个在重启时运行它的cronjob。在您的 schedule.rb 文件中:

    every :reboot do
     rake 'start_delayed_jobs'
    end
    

    然后在你的 rake 文件中:

    desc 'Start delayed jobs'
      task :start_delayed_jobs do
        system("#{Rails.root}/bin/delayed_job start")
      end
    end
    

    【讨论】:

    • 这可行,但可以快速修复错字 --> system("#{Rails.root}/bin/delayed_job start")
    【解决方案3】:

    如果您使用的是gem 'delayed_job_active_record'。 您在本地 ubuntu 系统上启动延迟作业,只需运行以下命令即可启动

    ./bin/delayed_job start
    

    然后重启

    ./bin/delayed_job restart
    

    如果我们处于开发模式,我们将使用下面的 rake 任务。

    bundle exec rake jobs:work
    

    【讨论】:

      【解决方案4】:

      用于生产:

          RAILS_ENV=production script/delayed_job -n2 restart
           
       or
      
          RAILS_ENV=production bin/delayed_job -n2 restart
      

      n2 是您希望在启动的情况下重新启动的延迟作业服务器的数量,而不是使用命令启动或重新启动。

      文档:https://github.com/collectiveidea/delayed_job#restarting-delayed_job

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-21
        • 2010-12-15
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        • 2015-12-18
        • 2021-12-30
        相关资源
        最近更新 更多