🎯 Intention


Configurer et créer un job qui tournera en arrière plan avec Sidekiq

<aside> ✅ Pré-requis

<aside> ⚠️

Attention, Sidekiq n’est plu la manière recommandé pour faire des jobs. Il faut privilégier l’utilisation de Solid Queue. Voir le standard ‣

</aside>

✅ Points clés


<aside> ⌛ Temps indicatif : 0.5J

</aside>

Etape

Visuel / Exemple


📦 Installer la gem Sidekiq

Raison :

La configuration minimum pour utiliser Sidekiq

# config/application.rb

class Application < Rails::Application
  # ...
  config.active_job.queue_adapter = :sidekiq
end

📺 Configurer Sidekiq UI

Raison :

L’interface permet de fournir en direct plusieurs informations :

# config/initializers/sidekiq.rb

require "sidekiq/web"

Sidekiq.configure_server do |config|
  config.logger.level = Rails.logger.level
end

Sidekiq.default_job_options = { "backtrace" => true }
# config/routes.rb

...

# il est possible de bloquer l'accès à l'interface Sidekiq
# via Devise comme l'exemple suivant
authenticate :compte, ->(c) { c.superadmin? } do
  mount Sidekiq::Web => "/sidekiq"
end

📝 Créer votre premier job

Raison :

La convention Rails des jobs

# app/jobs/mon_super_job.rb

# frozen_string_literal: true

class MonSuperJob < ApplicationJob
  queue_as :default

  def perform
		# faites ce que vous voulez
  end
end

# Pour utiliser le job :

# exécutera en direct le job sans passer par le serveur worker
MonSuperJob.perform_now
# exécutera en direct le job en passant par le serveur worker
MonSuperJob.perform_later

# on utilisera principalement la deuxième option

🔧 Configurer les options de Sidekiq

Raison :

# config/sidekiq.yml

---
:concurrency: <%= ENV.fetch("SIDEKIQ_CONCURRENCY", 15).to_i %>
# Les chiffres à coté de la queue détermine l'importance
# plus le chiffre est haut plus c'est important.
:queues:
	- ["default", 2]
  - ["mailers", 2]
	- ["active_storage_analysis", 1]
  - ["active_storage_purge", 1]