Ruby on rails 我可以运行rake任务来模拟sidekiq运行吗?
我有一个rails应用程序,我想在上面使用sidekiq 在我弄清楚如何在服务器上设置sidekiq等之前,我是否可以创建一个rake任务来运行sidekiq workers以处理任何挂起的作业 我知道这不是一个生产解决方案,但我只想确保服务器上的其他一切都正常工作,目前我在服务器上运行rake任务是可以的,因为这更适合于质量保证。参考 并且,我设法得出以下结论:Ruby on rails 我可以运行rake任务来模拟sidekiq运行吗?,ruby-on-rails,sidekiq,Ruby On Rails,Sidekiq,我有一个rails应用程序,我想在上面使用sidekiq 在我弄清楚如何在服务器上设置sidekiq等之前,我是否可以创建一个rake任务来运行sidekiq workers以处理任何挂起的作业 我知道这不是一个生产解决方案,但我只想确保服务器上的其他一切都正常工作,目前我在服务器上运行rake任务是可以的,因为这更适合于质量保证。参考 并且,我设法得出以下结论: # ScheduledSet returns "pending" jobs scheduled_jobs = Sidekiq::Sc
# ScheduledSet returns "pending" jobs
scheduled_jobs = Sidekiq::ScheduledSet.new
# puts scheduled_jobs.class
# => Sidekiq::ScheduledSet
scheduled_jobs.each do |scheduled_job|
# puts scheduled_job.class
# => Sidekiq::SortedEntry
job_class = scheduled_job.klass.constantize
job_args = scheduled_job.args
# you can also filter out only jobs in certain queue, i.e.:
# if scheduled_job.queue == 'mailers' ......
# run the job inline
job_class.new.perform(*job_args)
end
然后把它包装成一个rake任务。登录到服务器,cd到应用程序的目录,手动运行“bundle exec sidekiq” 通过“挂起作业”,我假设您已经在Sidekiq将要使用的服务器中设置了redis,并且每当调用
.perform\u async
或.perform\u later
时,作业已经存储在redis队列中。或者,如果您还没有设置redis,但只是想快速运行作业,那么您可以简单地创建一个将内联运行作业的rake任务:即MyJob.new.perform
或如果使用ActiveJob:MyJob.perform\u now
如果redis队列中已经有作业,并且您想通过rake任务处理/运行它们,那么我不知道有什么简单的解决办法。但是,我想到了以下几点:;请看下面我的答案。顺便问一下,贵公司是否有机会制作sidekiq支持docker的图片?