These jobs can be everything from regularly scheduled clean-ups, to billing charges, to mailings. Anything that can be chopped up into small units of work and run in parallel, really.
User
:User
se volverá gigante!"User
o BankMovement
empiecen a crecer y a tener múltiples responsabilidades.app/jobs/generate_user_bank_movements_report_job.rb
:spec/jobs/generate_user_bank_movements_report_job_spec.rb
perform_later
en vez de perform_now
asÃ:config/initializers/sidekiq.rb
con la configuración básica de sidekiq: conexión con Redis, autenticación del panel de control, etc.config/sidekiq.yml
que permite configurar colas, prioridades y concurrencia entre otras cosas. Por ejemplo:concurrency: 5
), que habrán 3 colas (critical
, default
y low
) y que critical
será la más prioritaria (debido al lugar que ocupa en la lista y no al nombre de la cola).config.active_job.queue_adapter
con los valores::async
en config/environments/development.rb
: para correr jobs en RAM. Esto nos sirve en ambiente de desarrollo pero no para producción ya que un reinicio del server eliminará los jobs que tengamos pendientes de ser ejecutados.:test
en config/environments/test.rb
: para obtener helpers que nos ayuden a testear jobs fácilmente.:sidekiq
en config/environments/production.rb
: para correr jobs con un "backend serio". En Platanus usamos Sidekiq​Procfile
y le agrega la lÃnea worker: bundle exec sidekiq
. Esto nos permitirá levantar sidekiq en un worker de Heroku cuando estemos en ambiente de producción.queue_as
.retry
. ActiveJob por defecto tiene una polÃtica de reintentar 5 veces, cada una separada por 3 segundos. Luego de esto se usa la implementación por defecto de Sidekiq, en el que se vuelven a encolar estos jobs pero con un delay exponencial.Job
se descarte en caso de una excepción en especÃfico.config/routes.rb
, vas a ver algo del estilo mount Sidekiq::Web => '/queue'
. Esto indica que la vista puede ser accedida desde http://localhost:3000/queue
.El password para poder ingresar al dashboard estará definido en la variable de entorno:SIDEKIQ_ADMIN_PASSWORD
.
mailers
y que potassium configura esto en config/sidekiq.yml
.sidekiq-scheduler
. Esta también viene en la configuración de Potassium. Pero también puedes agregarla ejecutando potassium install schedule
.