поэтому у меня есть эта работа, где она может быть запрошена несколько раз. однако, когда я запускаю sidekiq, я хочу, чтобы задания запускались по одной задаче за раз, в очереди. Я не могу найти функцию или способ сделать это, пожалуйста, помогите.Sidekiq активная работа, как запустить одну работу за раз? (non-concurrent run)
0
A
ответ
0
Вы можете в основном настроить sidekiq, так что ваша очередь работает FIFO, из того, что я читаю, вы хотите, дело в том, что sidekiq предназначен для обработки параллельного процесса, тем не менее, если вы хотите, вы можете изменить свой параллелизм на 1 так одна работа выполняется только тогда, или попробуйте что-то, что здесь указано.
https://github.com/mperham/sidekiq/wiki/Best-Practices#3-embrace-concurrency
0
Если вы хотите, чтобы убедиться, что только один экземпляр вашей ActiveJob Работа проходит в то время, а затем осуществить блокировку мьютекса. Это легко с драгоценным камнем, как redis-mutex (если вы уже используете 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