Corre tus tareas recurrentes con Sidekiq

En Webdox utilizamos Sidekiq como nuestra plataforma para procesar tareas asíncronas. Sidekiq utiliza hilos(스레드) para manejar varias tareas al mismo tiempo en un mismo proceso.

Tenemos muchas tareas que ejecutamos de forma asíncrona con Sidekiq, por ejemplo: El envío de notificaciones por correo, la reindexación de contratos, la generación masiva de contratos y el inicio de la firma electrónica de cada contrato masivo 등

Sidekiq se puede usar de forma gratuita y de forma paga. Cuando usamos la forma gratuita hay ciertas funcionalidades que no se incluyen y una de estas es ejecutar CRON JOBS. Con esta funcionalidad podríamos tomar una tarea de Sidekiq y ejecutarla recurrentemente cada cierto tiempo con Cron jobs

다행스럽게도 Sidekiq 및 Webdox 유틸리티에 대한 Gemas que funcionan como plugins una para ejecutar tareas recurrentes de forma gratuita, su nombre es Sidekiq Scheduler

A continuación un pequeño tutorial de cómo utilizar Sidekiq Scheduler

설치 및 구성



Agregamos la gema en nuestro Gemfile

# Gemfile
gem 'sidekiq-scheduler'


y Ejecutamos:

bundle install


Creamos un Worker de Sidekiq el cual se ejecutará cada cierto tiempo.

hello_world_worker.rb

require 'sidekiq-scheduler'

class HelloWorldWorker
  include Sidekiq::Worker

  def perform
    puts 'Hello world'
  end
end


작업자가 Sidekiq의 구성을 보관할 때 수정한 주기를 구성하고 스케줄러를 분리하지 않음:

# config/sidekiq.yml

:schedule:
  hello_world:
    cron: '0 * * * * *'   # Runs once per minute
    class: HelloWorldWorker


Y corremos Sidekiq:

bundle exec sidekiq -C config/sidekiq.yml


Sidekiq veremos는 "Hello world"메시지를 포함합니다.

2021-06-07T15:54:38.710Z 62465 TID-ownzi9r98 INFO: Running in ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin20]
2021-06-07T15:54:38.710Z 62465 TID-ownzi9r98 INFO: See LICENSE and the LGPL-3.0 for licensing details.
2021-06-07T15:54:38.710Z 62465 TID-ownzi9r98 INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2021-06-07T15:54:38.723Z 62465 TID-ownzi9r98 INFO: Loading Schedule
2021-06-07T15:54:38.723Z 62465 TID-ownzi9r98 INFO: Schedule empty! Set Sidekiq.schedule
2021-06-07T15:54:38.724Z 62465 TID-ownzi9r98 INFO: Schedules Loaded
2021-06-07T15:54:38.734Z 62465 TID-ownzi9r98 INFO: Reloading Schedule
2021-06-07T15:54:38.734Z 62465 TID-ownzi9r98 INFO: Loading Schedule
2021-06-07T15:54:38.790Z 62465 TID-ownzi9r98 INFO: Scheduling hello_world {"cron"=>"0 * * * * *", "class"=>"HelloWorldWorker", "queue"=>"default"}
2021-06-07T15:54:38.791Z 62465 TID-ownzi9r98 INFO: Schedules Loaded
2021-06-07T15:54:38.791Z 62465 TID-ownzi9r98 INFO: Starting processing, hit Ctrl-C to stop
2021-06-07T15:59:37.940Z 62990 TID-ov0v1hmpo HelloWorldWorker JID-4a465f9e9646157552de7f5c INFO: start
Hello world
2021-06-07T15:59:37.940Z 62990 TID-ov0v1hmpo HelloWorldWorker JID-4a465f9e9646157552de7f5c INFO: done: 0.0 sec
2021-06-07T15:59:37.940Z 62990 TID-ov0v1hmpo HelloWorldWorker JID-64dc6b6cb06ebf580c3faae6 INFO: start
Hello world
2021-06-07T15:59:37.940Z 62990 TID-ov0v1hmpo HelloWorldWorker JID-64dc6b6cb06ebf580c3faae6 INFO: done: 0.0 sec


Además tenemos la opción de visualizar las tareas recurrentes en el panel de administracion de Sidekiq si realizamos la siguiente configuración:

# config.ru

require 'sidekiq/web'
require 'sidekiq-scheduler/web'

run Sidekiq::Web




Por último recomendamos utilizar la página CronTabGurú cuando necesitemos configurar la periodicidad de las tareas recurrentes con la sintaxis de Cron Jobs.

Tener en cuenta que la sintaxis de cron jobs que utiliza Sidekiq Scheduler tiene una sección extra en la parte de adelante la cual nos permite configurar los segundos.

좋은 웹페이지 즐겨찾기