运行延误的工作部署生产服务器上后,(Run delayed jobs after deployed

2019-08-17 04:49发布

随着delayed_jobs宝石( https://github.com/collectiveidea/delayed_job中轨),我能够排队我通知。 但我不太明白我怎么能在生产服务器上运行排队的作业。 我知道我可以只运行

$ rake jobs:work

在控制台本地服务器。 由于文档说,你就可以做到以下几点:

RAILS_ENV=production script/delayed_job start
RAILS_ENV=production script/delayed_job stop

# Runs two workers in separate processes.
RAILS_ENV=production script/delayed_job -n 2 start
RAILS_ENV=production script/delayed_job stop

# Set the --queue or --queues option to work from a particular queue.
RAILS_ENV=production script/delayed_job --queue=tracking start
RAILS_ENV=production script/delayed_job --queues=mailers,tasks start

# Runs all available jobs and the exits
RAILS_ENV=production script/delayed_job start --exit-on-complete
# or to run in the foreground
RAILS_ENV=production script/delayed_job run --exit-on-complete

我的问题是如何将它与我的Rails应用程序集成我想创建一个名为delayed_jobs.rb在配置/初始值设定为文件?

# in config/initializers/delayed_jobs
script/delayed_job start if Rails.env.production?

但我不知道这是否是做正确的方式。 谢谢

Answer 1:

工人运行作为单独的进程,而不是你的Rails应用程序的一部分。 最简单的方法是在运行rake任务屏幕会话,以防止它,当你注销终端会话的退出。 但也有更好的方法:

你会使用的系统,如monit的或神或运行通过的delayed_job提供的工人脚本。 你会发现更多的信息在这个问题的答案 。



Answer 2:

在我experiencie我发现用我的解决方案Capistrano的宝石,这在官方文档的话

它支持脚本和任意任务的执行,并且包括一组理智默认部署的工作流程。

基本上它是一个工具,可以帮助您部署应用程序,其中包括所有这些任务,如启动/回采队列,迁移数据库,捆绑新的宝石,以及所有的那些事儿,我们通常做ssh连接。

下面是关于Capistrano的和beutifull教程webfaction作为托管。 而这里是一个很好的模块融入Capistrano的和delayed_job 。 在结束时,你应该只对开发环境的关注,因为每一个需要部署到生产的时间,你会做一个承诺,你的资料库,然后

$ cap production deploy

将管理整个生产环境,回采/重新启动这些队列,重新启动应用程序,安装宝石和一切,你可以通过Capistrano的脚本的方式执行。



文章来源: Run delayed jobs after deployed on production server