我目前正在使用 site5 服务器,并且想
rake jobs:work
一直运行。除非我登录到服务器,否则我目前无法发送作业。我希望有人可以帮助我解决这个问题。ar_mailer
和gem遇到了很多麻烦whenever
......但是在我的 rails 应用程序中还有大约 5 个 gem 可以完美运行。
有人可以解释一下这个解决方案吗?非常感激。(作为插件安装了delayed_job)
我目前正在使用 site5 服务器,并且想
rake jobs:work
一直运行。除非我登录到服务器,否则我目前无法发送作业。我希望有人可以帮助我解决这个问题。ar_mailer
和gem遇到了很多麻烦whenever
......但是在我的 rails 应用程序中还有大约 5 个 gem 可以完美运行。
有人可以解释一下这个解决方案吗?非常感激。(作为插件安装了delayed_job)
如果您使用 capistrano,请在部署应用程序时启动延迟作业。将此添加到您的部署配方文件中。
require 'delayed/recipes'
after "deploy:stop", "delayed_job:stop"
after "deploy:start", "delayed_job:start"
after "deploy:update_code", "delayed_job:stop"
after "deploy:restart", "delayed_job:start"
好的,我有一个解决方法,这是我能做的最好的,但它在某种程度上有效......我使用了 CRON 作业和自定义脚本/jobrunner 文件。
我创建了jobrunner脚本,script/jobrunner
其中包含以下内容
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/environment'
Delayed::Worker.new.start
然后在一个 cron 作业中,我让它运行该文件。
在 cron 报告中,我仍然遇到一些错误,但作业正在运行,我对此很满意!
例如,cron 作业在第 50 分钟每小时运行一次,它会遍历表中的所有延迟作业并处理它们。这是我发现的针对我的问题的下一个最佳解决方法。希望这对将来的人有所帮助。
去看看我可以为每天/每周的任务想出什么其他脚本。
延迟作业附带一个脚本,用于在后台启动自身并记录到 log/delayed_job.log。你可以像这样在开发模式下启动一个守护进程的delayed_job:
RAILS_ENV=development script/delayed_job start