如何使用Ubuntu启动延迟作业?

ilo*_*acs 2 ubuntu ruby-on-rails delayed-job rails-activejob

我在我的Rails 5应用程序上使用延迟作业作为Active Job的排队后端,但我不知道如何在启动后启动Ubuntu 14.04上的worker.我应该包装rails jobs:work成Bash脚本吗?我怎么能让它自动启动?还是优先使用bin/delayed_job

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

Ric*_*ard 7

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

every :reboot do
 rake 'start_delayed_jobs'
end
Run Code Online (Sandbox Code Playgroud)

然后在你的rake文件中:

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


And*_*eko 6

你所使用的操作系统并不重要(只要它不是Windows:D).

要开始处理,命令是:

bundle exec rake jobs:work
Run Code Online (Sandbox Code Playgroud)

重新启动delayed_job命令是:

RAILS_ENV=production script/delayed_job restart
Run Code Online (Sandbox Code Playgroud)

查看宝石README了解更多信息.

编辑

(根据评论)

您可以在用户的​​主页中创建一些bash脚本start_delayed_jon.sh.

一些事情:

#!/bin/bash
cd /path/to/your/project/directory/
RAILS_ENV=development bundle exec rake jobs:work
Run Code Online (Sandbox Code Playgroud)

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

su -s /bin/bash - deploy /path/to/your/project/directory/start_delayed_jon.sh
Run Code Online (Sandbox Code Playgroud)


V K*_*ngh 5

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

./bin/delayed_job start
Run Code Online (Sandbox Code Playgroud)

并重新启动

./bin/delayed_job restart
Run Code Online (Sandbox Code Playgroud)

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

bundle exec rake jobs:work
Run Code Online (Sandbox Code Playgroud)