ActiveJob和Sidekiq的工作陷入了困境

时间:2018-01-11 19:43:28

标签: ruby-on-rails ruby sidekiq rails-activejob

所以我刚刚迁移到Rails 5.1.4并且我正在尝试使Active Job工作,但是这些工作只是停留在队列中而且从未被处理过。

  • rails:5.1.4
  • ruby​​:2.4.3
  • sidekiq:5.0.5
  • redis:4.0.1

sidekiq.yml

---
:verbose: true
:concurrency: 5
:timeout: 60
development:
  :concurrency: 25
staging:
  :concurrency: 50
production:
  :concurrency: 5
:queues:
  - default
  - [high_priority, 2]

sidekiq.rb

Sidekiq.configure_server do |config|
  config.redis = {url: ENV['ACTIVE_JOB_URL'], network_timeout: 5}
end

Sidekiq.configure_client do |config|
  config.redis = {url: ENV['ACTIVE_JOB_URL'], network_timeout: 5}
end

这是我从rails控制台执行任务的方式:

TestJob.perform_later

TestJob.rb内容:

class TestJob < ApplicationJob
  queue_as :default

  def perform(*args)
    Rails.logger.debug "#{self.class.name}: I'm performing my job with arguments: #{args.inspect}"
  end
end

作业刚停留在队列中,从未处理过:

enter image description here

1 个答案:

答案 0 :(得分:2)

您是否已经开始工作,例如在开发过程中可能是:

bundle exec sidekiq

如果在生产中Heroku应该为您执行此操作,如果您已配置 Procfile ,例如:

web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq

您还可以使用 foreman 在开发中使用Procfile,例如:

foreman start -f Procfile