Sidekiq где задание находится сразу после установки с использованием задержки - PullRequest
0 голосов
/ 04 мая 2018

Я планирую работу с Sidekiq и хочу проверить размер очереди сразу после того, как я запланировал это:

MyClass.delay.my_method
Sidekiq::ScheduledSet.new.size # => 0
Sidekiq::Queue.new.size # => 0

И я удивлен, что очередь пуста, хотя я вижу в пользовательском интерфейсе мониторинга, что задание еще не было выполнено (и фактически оно выполняется через несколько секунд).

Мой реальный случай немного сложнее. Я планирую задание, а затем отображаю страницу, и на этой странице я проверяю, запланированы или запущены задания определенного типа, но кажется, что все происходит быстро, и моя проверка завершается неудачно (если я сразу же перезагружаю страницу, проверка прошла успешно).

Я предполагаю, что есть небольшая задержка между задержкой вызова и заданием, фактически заканчивающимся в любой из очередей. Есть ли способ, которым я могу обойти это, то есть, чтобы проверить все такие задания (которые еще не попали в очередь).

1 Ответ

0 голосов
/ 05 мая 2018

Задержка просто означает «запустить этот метод в Sidekiq». Это похоже на вызов execute_async, и задание будет немедленно поставлено в очередь.

ScheduledSet предназначен для delay_for(1.hour, ...), как и perform_in(1.hour, ...), где вы создаете задание и не хотите ставить его в очередь на некоторое время.

Вы видите пустую очередь, потому что Sidekiq забирает задание и выполняет его в течение микросекунд. Текущее задание больше не ставится в очередь.

...