ruby-on-rails-3 redis sidekiq

ruby on rails 3 - Sidekiq no procesa cola



ruby-on-rails-3 redis (4)

¿Qué razones posibles pueden impedir Sidekiq procesar trabajos en la cola? La cola está llena. El archivo de registro sidekiq.log indica que no hay actividad. Por lo tanto, la cola está llena, pero el registro está vacío y Sidekiq no parece procesar los elementos. Parece que no hay trabajos de procesamiento de trabajadores. Reinicia Redis o FLUSHALL con FLUSHALL o FLUSHDB como sin efecto. Sidekiq ha sido comenzado con

bundle exec sidekiq -L log / sidekiq.log

y produce el siguiente archivo de registro:

2013-05-30..Booting Sidekiq 2.12.0 using redis://localhost:6379/0 with options {} 2013-05-30..Running in ruby 1.9.3p374 (2013-01-15 revision 38858) [i686-linux] 2013-05-30..See LICENSE and the LGPL-3.0 for licensing details. 2013-05-30..Starting processing, hit Ctrl-C to stop

¿Cómo puedes descubrir qué salió mal? ¿Hay algún archivo de registro oculto?


Acabo de tener este problema. Resulta que cometí un error de sintaxis en mi sidekiq.yml


En caso de que no esté seguro sobre los nombres de sus colas, puede resolverlo con la siguiente secuencia de comandos:

require "sidekiq/api" stats = Sidekiq::Stats.new stats.queues # {"production_mailers"=>25, "production_default"=>1}

Luego, puedes hacer cosas con las colas:

queue = Sidekiq::Queue.new("production_mailers") queue.count queue.clear


Estuve golpeando mi cabeza contra una pared de ladrillos en esto por un tiempo, mi problema era que sidekiq requería una versión más nueva de redis-server. Ejecuté "bundle exec sidekiq" y eso reveló el error. Una vez que actualicé a una versión más nueva de redis-server estaba bien.


La razón fue en nuestro caso: Sidekiq puede buscar la cola incorrecta. Por defecto, Sidekiq usa una cola llamada "predeterminada". Usamos dos nombres de cola diferentes, y los definimos en config / sidekiq.yml

# configuration file for Sidekiq :queues: - queue_name_1 - queue_name_2

El problema es que este archivo de configuración no se carga automáticamente de forma predeterminada en su entorno de desarrollo (a diferencia de database.yml o thinking_sphinx.yml por ejemplo) mediante un simple comando bundle exec sidekiq . Por lo tanto, escribimos nuestros trabajos en dos colas determinadas, y Sidekiq estaba esperando trabajos en una tercera cola (la predeterminada). --config pasar la ruta al archivo de configuración como un parámetro a través de la opción -C o --config :

bundle exec sidekiq -C ./config/sidekiq.yml

o puede pasar los nombres de las colas directamente (no se permiten espacios aquí después de la coma):

bundle exec sidekiq -q queue_name_1,queue_name_2

Para encontrar el problema, es útil pasar la opción -v o --verbose en la línea de comando, o para usar :verbose: true en el archivo sidekiq.yml . Todo lo que se define en un archivo de configuración es, por supuesto, inútil si el archivo de configuración no está cargado ... Por lo tanto, asegúrese primero de que está utilizando el archivo de configuración correcto.