Resque Gem : Pour les processus d'arrière-plan dans ROR

Élégant et amusant ? Ces expressions ne sont pas quelque chose que vous associeriez à un langage de programmation. Droite? Mais c’est exactement ce qu’est Ruby on Rails. Ruby on Rails, plus communément appelé simplement Rails, est un pur langage de programmation orienté objet avec une syntaxe propre, simple et conviviale. Et par sens simple et convivial, cela signifie que vous pouvez préparer une application Web beaucoup plus rapidement qu’avec n’importe quel autre langage de programmation. Pour mettre en ligne, tout ce dont vous avez besoin est un serveur Web et une base de données. Et bien sûr, quelques pépites ! L’un des meilleurs atouts de Ruby est l’énorme liste de codes catégorisés et réutilisables, appelés à juste titre « gemmes ». La beauté de Ruby on Rails réside dans le fait qu'avec l'aide de ces joyaux, vous pouvez créer des applications facilement et avec beaucoup moins d'efforts que d'autres technologies. Lisez la suite pour en savoir plus sur Rasque, qui est un joyau pour créer des emplois en arrière-plan. Resque crée des tâches en arrière-plan à l'aide de Redis. Puisqu'il prend en charge plusieurs files d'attente, nous pouvons les placer sur plusieurs files d'attente et les traiter également plus tard. Et il est livré avec une interface d'administration pour surveiller et gérer les files d'attente. Resque est destiné à être utilisé dans des situations où un volume élevé de saisies d'emplois est requis et fournit des mécanismes pour garantir la réflexivité et la cohérence du comportement tout en fournissant des statistiques à l'aide d'un tableau de bord Web. Lorsque nous disposons d'un long bloc de code de traitement dont nous n'avons pas besoin pour l'exécuter dans le cycle de requête de notre application Web, un système de file d'attente de traitement en arrière-plan est la seule bonne solution. Nous obtenons ainsi une application Ruby plus rapide et plus performante. Bien que Resque s'inspire dans une large mesure de DelayedJob, si nous avons besoin de plusieurs files d'attente dans notre application, Resque est probablement un meilleur choix. Choisissez Resque si :
  • Vous avez besoin de plusieurs files d'attente
  • Vous n'aimez pas particulièrement les priorités numériques
  • Vous travaillez avec d'énormes files d'attente
  • Vous travaillez avec Redis
  • Vous ne manquerez pas de RAM
Puisqu'il existe un certain nombre de systèmes de file d'attente open source (delayed_job, beanstalk), nous n'avons pas besoin d'écrire les nôtres ! Ici, nous verrons comment configurer le système de file d'attente de réponse dans une application Ruby on Rails. Configuration de la demande :
bash : brew install redis redis-server /usr/local/etc/redis.conf resque-web rake resque:work QUEUE='*'
Fichier gemme :
gem 'resque', :require => « resque/server » Installez le nouveau gem : bundle install Créez un fichier de configuration redis appelé redis.yml dans config : defaults : &defaults host : localhost port : 3002 development : << : *defaults test : << : *mise en scène par défaut : << : *production par défaut : << : *par défaut
Ajoutez un fichier d'initialisation appelé resque.rb dans config/initializers :
Dir[File.join(Rails.root, 'app', 'jobs', '*.rb')].each { |file| require file } config = YAML::load(File.open(“#{Rails.root}/config/redis.yml”))[Rails.env] Resque.redis = Redis.new(:host => config[' hôte'], :port => config['port'])
Ajoutez resque.rake à lib/tasks :
nécessite la tâche 'resque/tasks' « resque:setup » => :environnement
Exécution de la requête :
start redis : redis-server start resque COUNT=5 QUEUE=* rake resque:workers voir l'interface utilisateur Web : resque-web
Comment ajouter des tâches Resque :
Créez une classe de travail : class FeedsCollectionJob @queue = :feeds_collection_job def self.perform(start_date, end_date) puts "from #{start_date} to #{end_date}" #TODO votre long processus ici end end
Exécutez-le en utilisant : Resque.enqueue(FeedsCollectionJob, start_date, end_date) Cette commande ne bloquera pas afin que vous puissiez intégrer ce code dans un modèle. Ouvriers: Il peut être distribué entre différentes machines, prendre en charge les priorités principales, résister aux « fuites » de mémoire et être optimisé.
Les travailleurs Resque sont des tâches de ratissage qui durent pour toujours. démarrer la boucle faire si travail = réserver job.process sinon dormir 5 fréquence # = 5 fin fin arrêt
Pour démarrer un travailleur :
$ QUEUE=file_serve rake resque:travail
Nous devrons charger notre application en mémoire. Une fois le plugin Resque as Rails installé, nous pouvons exécuter cette commande depuis notre RAILS_ROOT :
$ QUEUE=file_serve rake environnement resque:travail
Par conséquent, il charge l'environnement et vous pouvez maintenant démarrer un Worker. En dehors de cela, nous pouvons écrire une tâche resque:setup avec une dépendance sur la tâche rake d'environnement :
tâche « resque:setup » => :environnement
Introspection: Il devrait y avoir plusieurs façons d’introspecter le comportement de Resque. Je recommanderais à tous le meilleur endroit pour ce faire, le tableau de bord Web Resque intégré. http://localhost:3000/resque Ici, nous permettrait d'inspecter les files d'attente, les travailleurs, les tâches en cours, les tâches ayant échoué et les traces de pile, ainsi que les statistiques Redis utiles. Nous pouvons faire la même chose en utilisant la console ;
Resque.info Resque.queues Resque.redis Resque.size(queue_name) Resque.peek(queue_name, start=1, count=1) Resque.workers Resque.working
Bien, tu l'as maintenant! Cet article espère vous expliquer comment resque, comment le configurer, comment ce joyau est bénéfique pour vous aider à créer une application Ruby plus performante. Vous avez une bonne idée d’application et souhaitez la développer le plus rapidement possible ? Optez pour Ruby on Rails et pendant que vous y êtes, sachez que RailsCarma est un excellent choix pour le développement de votre application. Railscarma a mis en œuvre Ruby on Rails depuis ses débuts pour le développement, la formation, le déploiement et la contribution à la communauté Rails et fournit meilleurs services de développement Ruby on Rails. RailsCarma fournit des services Ruby on Rails de bout en bout, notamment du conseil, de l'architecture, de la construction, de la gestion et de l'extension, aux entreprises du monde entier. Vous pouvez également embaucher des développeurs Ruby on Rails grâce à un processus d'embauche simple. Contactez-nous en savoir plus. Lire d'autres articles similaires :

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench