rails new dockerize deploy compose app and ruby-on-rails ruby nginx passenger sidekiq

ruby-on-rails - new - docker rails psql



El trabajador de Sidekiq no se activa (9)

Tuve un problema similar cuando Sidekiq se estaba ejecutando, pero cuando llamé a perform_async no hizo nada excepto devolver true .

El problema fue que rspec-sidekiq se agregó a mi grupo " : desarrollo, prueba ". Solucioné el problema moviendo rspec-sidekiq solo al grupo " : prueba ".

Estoy usando Sidekiq para mis trabajos de fondo:

Tengo una aplicación para trabajadores / workers / data_import_worker.rb

class DataImportWorker include Sidekiq::Worker sidekiq_options retry: false def perform(job_id,file_name) begin #Some logic in it ..... end end

Llamado desde un archivo lib / parse_excel.rb

def parse_raw_data #job_id and #filename are defined bfr DataImportWorker.perform_async(job_id,filename) end

Tan pronto como lo desencadené de mi acción, no se llama al trabajador. Redis se está ejecutando en el localhost:6379

Alguna idea de por qué esto debe estar pasando. El entorno es Linux.


Me encuentro con el mismo problema, resulta que el argumento que pasé en la función perform_async no es apropiado, parece que uno no debe pasar ningún resultado de la consulta en perform_async, debe hacer toda la consulta en la función perform.


Debe especificar el nombre de la cola para la que trabaja.

Ejemplo: sidekiq_options reintentar: falso ,: queue => data_import_worker

data_import_worker puede ser cualquier nombre que quiera darle.

Luego, cuando vaya a la interfaz web: yoursite.com/sidekiq, podrá ver a los trabajadores actuales para la cola "data_import_worker"


Mi problema era simplemente tener el archivo de trabajador en el camino equivocado.

Necesita estar en "raíz_proyecto / app / worker / worker.rb", no "raíz_proyecto / worker / worker.rb"

Verifique la ruta del archivo!


Inicie sidekiq desde el directorio raíz de su aplicación Rails. Por ejemplo,

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


¿Es realmente ejecutar varios trabajadores en sidekiq independiente? por ejemplo, tengo 2 trabajadores: ProccessWorker CallbackWorker

cuando estoy runnigs sidekiq: bundle exec sidekiq -r ./workers/proccess_worker.rb -C ./config/sidekiq.yml

solo un trabajador al mismo tiempo.


Estaba llamando a perform_async(23) en una consola de producción, sin embargo, mi sidekiq se inició en modo de transición.

Después de que comencé el Sidekiq en modo de producción, las cosas comenzaron a funcionar muy bien.


Perdí unos buenos 15 minutos en esto. Para comprobar si Sidekiq está cargando correctamente su archivo de configuración (con los nombres de las colas), vaya a la interfaz web en la pestaña Ocupado y encontrará su ID de proceso y debajo encontrará sus colas.

En nuestro caso, teníamos un mailer mal escrito (la cola correcta de ActiveJob para Mailers es mailers , en plural).


Para mí, al hacer un perform_later, se pondría en cola pero nunca se eliminará de la cola. Necesitaba agregar mi nombre de cola al archivo sidekiq.yml

--- :concurrency: 25 :pidfile: ./tmp/pids/sidekiq.pid :logfile: ./log/sidekiq.log :queues: - default - my_queue