Rails 使用 ActiveJob/Sidekiq 不会启动作业
Rails using ActiveJob/Sidekiq does not initiate job
在将 ActiveJob 与 sidekiq 一起使用时,
# application.rb
config.active_job.queue_adapter = :sidekiq
我用redis做了一份工作。
class SubmissionJob < ActiveJob::Base
queue_as :default
def perform(*args)
在检查日志时,在调用作业后
SubmissionJob_perform_later args
但是在执行 rails s
时给出消息后这不起作用
Enqueued SubmissionJob (Job ID: 63320b9d-de2a-4791-99f6-e58f2adf73d7) to Sidekiq(development_default) with arguments: ["12345", "12346"]
最后,我渲染了从 redis 使用 job_id 调用的结果,结果应该是 return 参数,但它只是 return 的空数组,而且它似乎 SubmissionJob 从未运行过。
然而,当我用 perform_now
调用时,SubmissionJob.perform_now args
该函数正常工作,所以似乎 SubmissionJob 方法本身不是问题。
我应该从哪里开始寻找问题,解决这个问题的可能方案是什么。
问题已解决。
这是因为 Work 没有成功地将作业从建议的队列中取出。当 运行 sidekiq 时,我给了 -q
选项。
例如bundle exec sidekiq -e develop -q develop_submit_job_queue
在将 ActiveJob 与 sidekiq 一起使用时,
# application.rb
config.active_job.queue_adapter = :sidekiq
我用redis做了一份工作。
class SubmissionJob < ActiveJob::Base
queue_as :default
def perform(*args)
在检查日志时,在调用作业后
SubmissionJob_perform_later args
但是在执行 rails s
Enqueued SubmissionJob (Job ID: 63320b9d-de2a-4791-99f6-e58f2adf73d7) to Sidekiq(development_default) with arguments: ["12345", "12346"]
最后,我渲染了从 redis 使用 job_id 调用的结果,结果应该是 return 参数,但它只是 return 的空数组,而且它似乎 SubmissionJob 从未运行过。
然而,当我用 perform_now
调用时,SubmissionJob.perform_now args
该函数正常工作,所以似乎 SubmissionJob 方法本身不是问题。
我应该从哪里开始寻找问题,解决这个问题的可能方案是什么。
问题已解决。
这是因为 Work 没有成功地将作业从建议的队列中取出。当 运行 sidekiq 时,我给了 -q
选项。
例如bundle exec sidekiq -e develop -q develop_submit_job_queue