ruby - retries - sidekiq retry queue
Obtenga sidekiq para ejecutar un trabajo de inmediato (1)
Por el momento, tengo un trabajo sidekiq como este:
class SyncUser
include Sidekiq::Worker
def perform(user_id)
#do stuff
end
end
Estoy colocando un trabajo en la cola de esta manera:
SyncUser.perform_async user.id
Todo esto funciona, por supuesto, pero hay un pequeño desfase entre llamar a perform_async y el trabajo que realmente se está ejecutando.
¿Hay algo más que pueda hacer para decirle a sidekiq que ejecute el trabajo de inmediato?
Hay dos preguntas aquí.
Si desea ejecutar un trabajo de inmediato, en el contexto actual puede usar:
SyncUser.new.perform(user.id)
Si desea disminuir la demora entre el trabajo asincrónico que se programa y cuando se ejecuta en el trabajador de sidekiq, puede disminuir la configuración de poll_interval
:
Sidekiq.configure_server do |config|
config.poll_interval = 2
end
poll_interval
es la demora dentro de los backends de los trabajadores de la frecuencia con que los trabajadores poll_interval
trabajos en la cola. El tiempo promedio entre un trabajo programado y ejecutado con un trabajador libre será poll_interval / 2
.