[RUBY] Je souhaite effectuer un traitement asynchrone et une exécution périodique avec Rail !!!

Je souhaite traiter de manière asynchrone

Le traitement de l'action est lourd et fait attendre l'utilisateur. .. Dans un tel cas, supprimons-le en tant que traitement asynchrone.

Après cela, la commande sera exécutée avec le serveur en cours d'exécution.

Ajoutez d'abord Sidekiq à la gemme Sidekiq ... ça sonne bien. ..

gem 'sidekiq'

Et installez

bundle

Lorsque vous démarrez Sidekiq en exécutant la commande bundle exec sidekiq ...

bash-4.4$ bundle exec sidekiq
               m,
               `$b
          .ss,  $$:         .,d$
          `$$P,d$P'    .,md$P"'
           ,$$$$$b/md$$$P^'
         .d$$$$$$/$$$P'
         $$^' `"/$$$'       ____  _     _      _    _
         $:     ,$$:       / ___|(_) __| | ___| | _(_) __ _
         `b     :$$        \___ \| |/ _` |/ _ \ |/ / |/ _` |
                $$:         ___) | | (_| |  __/   <| | (_| |
                $$         |____/|_|\__,_|\___|_|\_\_|\__, |
              .d$$                                       |_|
      

Cool ... !! J'ai donc pu démarrer Sidekiq facilement.

Modifiez maintenant config / environnements / development.rb pour intégrer Rails et Sidekiq.

config/environments/development.rb


...
  config.active_job.queue_adapter = :sidekiq
end

Les réglages sont maintenant terminés.

Ensuite, créez un travail avec une commande.

bin/rails g job sample

Sortons dans le journal pour voir si le traitement asynchrone est effectué

sample_job.rb



class SampleJob < ApplicationJob
  queue_as :default

  def perform(*args)
    Sidekiq::Logging.logger.info "Créer un emploi"
  end
end

Vous pouvez maintenant vérifier si un traitement asynchrone a été effectué. Tout ce que vous avez à faire est de l'appeler là où vous souhaitez effectuer un traitement asynchrone ou une exécution périodique.

controller.rb


#Traitement asynchrone
SampleJob.perform_later
#Spécifiez la date et l'heure d'exécution(Courir à midi demain)
SampleJob.set(wait_until: Date.tomorrow.noon).perform_later

Le traitement asynchrone était possible de cette manière. C'est tout pour aujourd'hui!

Recommended Posts

Je souhaite effectuer un traitement asynchrone et une exécution périodique avec Rail !!!
Je souhaite effectuer un traitement d'agrégation avec spring-batch
Je souhaite effectuer un traitement Group By avec Stream (group-by-count, group-by-sum, group-by-max)
Je veux faire des transitions d'écran avec kotlin et java!
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Je veux implémenter diverses fonctions avec kotlin et java!
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Je veux afficher des images avec REST Controller de Java et Spring!
[Administrateur actif] Je souhaite personnaliser le traitement de création et de mise à jour par défaut
Traitement asynchrone avec exécution régulière dans Spring Boot
Je veux utiliser java8 forEach avec index
Je veux jouer avec Firestore de Rails
[Rails] Je veux charger du CSS avec webpacker
J'ai essayé de lire et de sortir CSV avec Outsystems
J'ai démarré MySQL 5.7 avec docker-compose et j'ai essayé de me connecter
Je souhaite surveiller un fichier spécifique avec WatchService
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
[Java] Je souhaite écrire un traitement asynchrone à l'aide de Promise dans Java-Trial of Promise-like syntax of JavaScript-
J'ai essayé d'augmenter la vitesse de traitement avec l'ingénierie spirituelle
Je veux amener Tomcat sur le serveur et démarrer l'application
Je souhaite effectuer une factorisation prime rapide avec Ruby (ABC177E)
[jackson] Je souhaite recevoir les valeurs JSON "0" et "1" sous forme de booléen
Lorsque vous souhaitez écrire explicitement OR ou AND avec ransack
[Rails] J'ai essayé d'implémenter le traitement par lots avec la tâche Rake
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je souhaite envoyer manuellement un e-mail d'autorisation avec Devise
Je veux passer la commande de démarrage à postgres avec docker-compose.
[Java] Je souhaite tester l'entrée standard et la sortie standard avec JUnit
Je veux convertir des caractères ...
Spring avec Kotorin --6 Traitement asynchrone
[Wire Mock] Je souhaite configurer un serveur stub / simulé en Java et effectuer des tests E2E.
[Spring Boot] Je veux ajouter mon propre fichier de propriétés et obtenir la valeur avec env.getProperty ().
Je souhaite accorder des autorisations de modification et de suppression uniquement à l'affiche
Webpack et webpacker que je veux dire aux gens de Ruby maintenant
Je veux connecter un casque SONY WH-1000XM4 avec LDAC avec ubuntu 20.04! !!
Je veux pouvoir penser et écrire moi-même des expressions régulières. ..
Je veux accrocher la génération / ouverture d'un fichier journal avec log4j # FileAppender
Je souhaite ajouter une fonction de navigation avec ruby on rails
Je veux comprendre le flux des paramètres de demande de traitement Spring
Je veux INSÉRER l'heure locale du printemps avec l'heure MySQL (également en millisecondes)
Je veux éviter OutOfMemory lors de la sortie de gros fichiers avec POI
Je veux vraiment faire "new T ()"! (Et sans exceptions d'inspection)
[Rails] Je souhaite ajouter des données aux paramètres lors de la transition avec link_to
Je veux extraire entre des chaînes de caractères avec une expression régulière
Vitesse de traitement avec et sans statique
J'ai essayé d'interagir avec Java
Effectuer manuellement un traitement équivalent à @ConfigurationProperties