Si vous travaillez avec beaucoup d'enregistrements et si son fonctionnement prend beaucoup de temps, comme importer ou exporter des milliers d'enregistrements ou synchroniser plus d'enregistrements, il est préférable de l'ajouter au travail en arrière-plan.
Sidekiq est le joyau qui peut être utilisé à cette fin. Sidekiq utilise plusieurs threads. Le fil de discussion par défaut dans sidekiq est "Défaut".
* Pour sidekiq, nous devons installer le serveur Redis.
"Sudo apt-get installer redis" installez et démarrez le serveur Redis pour votre console.
* Ajoutez la gemme sidekiq et exécutez l'installation du bundle.
joyau 'sidekiq'
* Nous devons générer la classe de travail dans le répertoire app/workers et les fichiers dans le répertoire app/workers seront automatiquement chargés.
Ex : /app/workers/test_worker.rb
la classe TestWorker inclut Sidekiq :: Worker def effectuer la fin de la fin
nous devons inclure Sidekiq::Worker et effectuer la méthode. La méthode Perform à l’intérieur du travailleur sera appelée automatiquement et le code qui doit être exécuté en arrière-plan est écrit ici.
Nous pouvons appeler cette classe de travail pour la méthode du contrôleur comme celle-ci :
TestWorker.perform_async (si vous souhaitez transmettre les arguments, vous pouvez les transmettre ici).
* Ensuite, nous devons démarrer le serveur sidekiq en
bundle exécutable sidekiq
* Si une tâche échoue en raison d'une erreur, Sidekiq réessayera cette tâche. Nous pouvons éviter la nouvelle tentative en donnant des options sidekiq.
réessai sidekiq_options : faux
* Dans sidekiq, nous pouvons planifier le travail après un certain temps. Pour cela, au lieu de perform_async, nous utiliserons perform_in.
Ex : PygmentsWorker.perform_in(1.hour, @snippet.id)
* Nous pouvons donner la priorité à la file d'attente dans sidekiq, par exemple si nous avons plusieurs travailleurs dans notre application et si nous voulons qu'un travailleur spécifique soit traité en premier, nous attribuerons le travailleur à la file d'attente spécifique.
EX : file d'attente sidekiq_options : "haute"
* nous pouvons traiter la file d'attente en exécutant le serveur sidekiq avec l'option -q.
bundle exec sidekiq -q high,5 par défaut,1
RailsCarma propose Services de développement ROR depuis plus de 8 ans. Nos développeurs maîtrisent parfaitement l'exécution de toutes sortes de Développement d'applications Ruby On Rails projets et améliorer les fonctionnalités de vos applications Rails existantes. Contactez-nous pour en savoir plus sur nos compétences en développement et les projets sur lesquels nous avons travaillé.