【问题标题】:Sidekiq enqueueing jobs, not dequeueing themSidekiq 让工作入队,而不是出队
【发布时间】:2014-10-29 07:33:35
【问题描述】:

出于某种原因,Sidekiq 没有为我运行任何作业。它可以完美地将它们排入队列,但它永远不会将它们移出队列。

我已经确认 redis 正在运行:

ps aux | grep redis
root      2756  0.0  0.0 140612  2656 ?        Sl   Sep03   0:36 redis-server *:6379
root      7489  0.0  0.0 110284   840 pts/0    S+   09:19   0:00 grep redis

我已确认 Sidekiq 正在运行:

ps aux | grep sidekiq
root      6732  0.1  1.9 2527436 148000 ?      Sl   09:04   0:03 sidekiq 3.2.1 CompleteSet-Rails [0 of 25 busy]                                                                                              
root      7901  0.0  0.0 110280   840 pts/0    S+   09:44   0:00 grep sidekiq

我开始使用 Sidekiq:

bundle exec sidekiq -d -e production -L log/sidekiq.log

我已经确认它正在将作业添加到队列中:

Sidekiq.redis { |r| r.lrange "queue:default", 0, -1 }.length
=> 70 
UserMailer.delay.reset_password(User.third)
=> "9fc420a5b21224e5b264b9e9" 
Sidekiq.redis { |r| r.lrange "queue:default", 0, -1 }.length
=> 71

我没有使用自定义工作者类,也没有尝试使用自定义 .yml 或 .rb 配置文件。任何想法为什么它不执行作业?

编辑:

我确实注意到选项不会返回任何队列。会不会跟这有关系?

Sidekiq.options
=> {:queues=>[], :labels=>[], :concurrency=>25, :require=>".", :environment=>nil, :timeout=>8, :error_handlers=>[], :lifecycle_events=>{:startup=>[], :quiet=>[], :shutdown=>[]}}

【问题讨论】:

    标签: ruby ruby-on-rails-4 redis sidekiq


    【解决方案1】:

    我没有明确地将其设置为检查 log/sidekiq.yml 或 config/initializers/sidekiq.rb,但无论如何它都会检查它们。在初始化文件中,我将其设置为仅从名为生产的队列中读取,但因为我使用的是Mailer.delay.whatever,所以它正在写入默认队列,即使我将其配置为仅使用生产。如果您想更改写入哪个队列,请使用自定义工作器,或使用Mailer.delay(queue: name) 将其放入您想要的队列。

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 1970-01-01
      • 2021-11-11
      • 2015-07-06
      • 2013-05-26
      • 1970-01-01
      • 2015-07-25
      • 2016-06-17
      • 2018-06-29
      相关资源
      最近更新 更多