所以我刚刚迁移到Rails 5.1.4并且我正在尝试使Active Job工作,但是这些工作只是停留在队列中而且从未被处理过。
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
作业刚停留在队列中,从未处理过:
答案 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