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