Ruby on rails Sidekiq活动作业,如何一次运行一个作业?(非并发运行)

Ruby on rails Sidekiq活动作业,如何一次运行一个作业?(非并发运行),ruby-on-rails,sidekiq,rails-activejob,Ruby On Rails,Sidekiq,Rails Activejob,所以,我有这个工作,它可以被要求多次。但是,当我运行sidekiq时,我希望作业在队列中一次运行一个作业。我找不到实际执行此操作的函数或方法,请提供帮助。您基本上可以调整sidekiq,这样您的队列工作FIFO,从我阅读的内容来看,这是您想要的,问题是sidekiq旨在处理并行过程,尽管如此,如果您愿意,您可以将并发性更改为1,这样一次只执行一个作业,或者尝试此处所述的方法 基本上你可以调整sidekiq,这样你的队列工作FIFO,从我读到的是你想要的,问题是sidekiq是用来处理并行进程的,

所以,我有这个工作,它可以被要求多次。但是,当我运行sidekiq时,我希望作业在队列中一次运行一个作业。我找不到实际执行此操作的函数或方法,请提供帮助。

您基本上可以调整sidekiq,这样您的队列工作FIFO,从我阅读的内容来看,这是您想要的,问题是sidekiq旨在处理并行过程,尽管如此,如果您愿意,您可以将并发性更改为1,这样一次只执行一个作业,或者尝试此处所述的方法


基本上你可以调整sidekiq,这样你的队列工作FIFO,从我读到的是你想要的,问题是sidekiq是用来处理并行进程的,但是如果你想,你可以将你的并发度改为1,这样一次只执行一个作业,或者试试这里介绍的方法


如果要确保一次只运行特定ActiveJob作业的一个实例,请实现互斥锁。使用gem很容易(如果您已经使用Redis和sidekiq):


如果要确保一次只运行特定ActiveJob作业的一个实例,请实现互斥锁。使用gem很容易(如果您已经使用Redis和sidekiq):


太棒了太棒了
def perform
  RedisMutex.with_lock(:your_lock_name, expire: XXX_SECONDS) do
    # do something exclusively
  rescue RedisMutex::LockError
    Rails.logger.debug "Another job is running, exiting ..."
  end
end