Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我可以运行rake任务来模拟sidekiq运行吗?_Ruby On Rails_Sidekiq - Fatal编程技术网

Ruby on rails 我可以运行rake任务来模拟sidekiq运行吗?

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

我有一个rails应用程序,我想在上面使用sidekiq

在我弄清楚如何在服务器上设置sidekiq等之前,我是否可以创建一个rake任务来运行sidekiq workers以处理任何挂起的作业

我知道这不是一个生产解决方案,但我只想确保服务器上的其他一切都正常工作,目前我在服务器上运行rake任务是可以的,因为这更适合于质量保证。

参考 并且,我设法得出以下结论:

# 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的图片?