如何在Ubuntu上启动Delayed Job?

6
我在我的Rails 5应用程序中使用Delayed Job作为Active Job的排队后端,但我不知道如何在Ubuntu 14.04启动后启动worker。我应该将rails jobs:work包装到Bash脚本中吗?如何使其自动启动?或者使用bin/delayed_job更好?如何在启动时启动延迟作业?
4个回答

11

无论你使用什么操作系统(只要不是Windows :D),都没有关系。

开始处理的命令是:

bundle exec rake jobs:work

重新启动delayed_job的命令是:

RAILS_ENV=production script/delayed_job restart

有关更多信息,请查看gems README

编辑

(根据评论)

您可以在用户的主目录下创建一些bash脚本start_delayed_jon.sh

例如:

#!/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

1
是的,这是我在我的开发机上启动它的方式,但是如何让Ubuntu在服务器启动时自动启动它? - ilovebigmacs
@ilovebigmacs,请告诉我我的回答是否有帮助,或者我应该将其删除。 - Andrey Deineko
感觉这不是一种强大的方法。等待更多答案。 - ilovebigmacs
@ilovebigmacs 在系统启动时启动脚本来启动某些东西,听起来不像是一种稳健的系统启动方式,不是吗? :) - Andrey Deineko
真的。我会接受答案并重新提问。意思是“应该如何正确地完成?”如果您使用此方法,您将永远不会知道作业是否失败或停止工作。每小时使用crontab重新启动似乎更好。 - ilovebigmacs

7
使用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

1
这个可以运行,但是需要快速修复一下打字错误 --> system("#{Rails.root}/bin/delayed_job start") - Jay

3

如果您正在使用gem 'delayed_job_active_record'

在本地的ubuntu系统上启动延迟任务,只需运行以下命令即可开始:


bundle exec bin/delayed_job start
./bin/delayed_job start

并重新启动

./bin/delayed_job restart

如果我们处于开发模式,那么我们将使用以下的Rake任务。

bundle exec rake jobs:work

0

用于生产:

    RAILS_ENV=production script/delayed_job -n2 restart
     
 or

    RAILS_ENV=production bin/delayed_job -n2 restart

n2是你想要在启动时重新启动的延迟作业服务器数量,如果使用命令“start”而不是“restart”,请使用“start”命令。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接