我正在处理活动记录宝石的延迟工作https://github.com/collectiveidea/delayed_job 我正在尝试设置一个工作,在我的应用程序中发生事件后运行五分钟.五分钟过后,我需要进行一些数据库更新.我尝试过rake jobs:work和RAILS_ENV =开发脚本/ delayed_job start.在此之前,我已经运行了bundle install,rails generate delayed_job:active_record和rake db:migrate.我有一个彩票网站,需要每五分钟检查一次获胜者,并为获胜的玩家更新令牌.
我等了五分钟,但我的本地应用程序没有更新.
这是我到目前为止所拥有的:
宝石文件:
gem 'delayed_job_active_record'
gem "daemons"
Run Code Online (Sandbox Code Playgroud)
工作(位于lib)
class WinnersJob < Struct.new(:blast_id)
def perform
...
end
Run Code Online (Sandbox Code Playgroud)
调节器
require 'winners'
Delayed::Job.enqueue(WinnersJob.new(blast.id), 1, 5.minutes.from_now)
end
Run Code Online (Sandbox Code Playgroud) 我使用Docker运行我的rails应用程序.延迟作业由单个工作程序处理,该工作程序在一个单独的控制器中运行,worker并且在其内部工作程序使用命令运行bundle exec rake jobs:work.
我有几种类型的工作,我想移动到一个单独的队列,并为此创建一个单独的工作者.或至少有两名工人负责过程任务.
我尝试运行我的工作容器,env QUEUE=default_queue bundle exec rake job:work && env QUEUE=another_queue bundle exec rake job:work但这没有任何意义.它没有失败,是启动但不处理作业.
有没有办法让一个容器中有单独的工人?这是对的吗?或者我应该为每个我想做的工人创建单独的容器?
Thanx提前!