ruby-on-rails - ActiveJob 未出现在 Sidekiq 队列中
问题描述
ActiveJob 分配似乎没有出现在 sidekiq 队列中。但是作业仍然被执行。
这是我的 active_job 设置config/environments/production.rb
config.active_job.queue_adapter = :sidekiq
config.active_job.queue_name_prefix = "faces_#{Rails.env}"
我sidekiq.yml
的通过 Capistrano 加载。
---
:concurrency: 5
:queues:
- default
production:
:concurrency: 20
:queues:
- faces_production_default
当我开始排队作业并检查它是否存在时的示例输出。
2.6.3 :001 > require 'sidekiq/api'
=> true
2.6.3 :002 > Sidekiq::Queue.new('faces_production_default').count
=> 0
2.6.3 :003 > stats = Sidekiq::Stats.new
=> #<Sidekiq::Stats:0x0000000004dd80e8 @stats={:processed=>48, :failed=>0, :scheduled_size=>1, :retry_size=>0, :dead_size=>0, :processes_size=>2, :default_queue_latency=>0, :workers_size=>0, :enqueued=>0}>
2.6.3 :004 > stats.queues
=> {"default"=>0, "faces_production_default"=>0, "mailers"=>0}
2.6.3 :005 > FaceParserJob.set(wait: 5.minutes).perform_later(200)
Enqueued FaceParserJob (Job ID: 9848e560-dbf5-4fc0-a3c3-6b8f00164a8a) to Sidekiq(faces_production_default) at 2019-04-28 15:16:25 UTC with arguments: 200
=> #<FaceParserJob:0x0000000004f19b00 @arguments=[200], @job_id="9848e560-dbf5-4fc0-a3c3-6b8f00164a8a", @queue_name="faces_production_default", @priority=nil, @executions=0, @scheduled_at=1556464585.1313956, @provider_job_id="43d2c83a305411bfda6626b1">
2.6.3 :006 > Sidekiq::Queue.new('faces_production_default').count
=> 0
问题是,如果我在 5 分钟内监控 sidekiq.log,它确实会执行该作业。我究竟做错了什么?
解决方案
作业仅在“启动”时才放入队列,直到那时 - 它在预定队列中等待,您可以检查
Sidekiq::ScheduledSet.new.size
推荐阅读
- javascript - 如何在 JavaScript 中返回同一函数中的函数调用及其参数
- java - 更新孩子而不是在firebase中创建新的!将其与 android recyclerview 连接
- php - 在 PHP 中将反斜杠更改为斜杠
- docker - Docker 意外修改主机文件的所有者/组
- android - 如何将 Recycler View 的项目居中?
- javascript - 如何为用 TypeScript 编写的 firebase 函数添加源映射支持
- javascript - 映射数组时在两个索引后更改 HTML 标记
- regex - 如何在表格 HTML 标记之间查找特定的 RegEx
- java - 如何在桶排序中动态增加arraylist的大小?
- php - 如何在 Phalcon 中更新原始 SQL 后获取结果集或受影响的行