最近我刚将生产环境的服务器从乘客改为puma。在美洲狮延迟工作之前工作正常没有任何错误,但在美洲狮之后它停止了工作。
我正在运行3个延迟作业来处理两个不同服务器上的传入请求,方法是将它们分为服务器1:1作业和服务器2:2作业。
RAILS_ENV=production bin/delayed_job -i first --queues=job_1,job_2 start
此命令用于在部署后启动延迟作业。我正在使用Capistrano 3进行部署。我还有Capistrano版本2到3的升级版本。
在Capistrano 2,我们有
require 'delayed/recepies'
但是根据推迟的工作官方文档,我创建了一个rake任务并执行以便重新开始工作。
它在delayed_jobs表中创建一个新条目,作为Delayed :: Backend :: ActiveRecord :: Job。
我在这里做错了什么?有没有工人不听我的来电?我是否需要开始其他事情?
---- ----修订
这是我为重新启动作业而创建的rake任务。
task :restart do
on roles(delayed_job_roles) do
within release_path do
with rails_env: fetch(:rails_env) do
execute('cd #{current_path};RAILS_ENV=production bin/delayed_job -i first --queues=job_1,job_2 stop')
execute('cd #{current_path};RAILS_ENV=production bin/delayed_job -i second --queues=job_1,job_2 start')
end
end
end
end
after 'deploy:publishing', 'delayed_job:restart'
正如我所提到的,我正在运行两个单独的服务器来管理delayed_jobs。在服务器2上,delayed_job.log文件未使用最新日志进行更新。当我尝试运行delayed_job时,它在服务器1而不是服务器2上执行。队列在服务器2上运行以处理这些作业,当它在服务器1上运行时,它无法找到确切的源,我正在寻找执行