Resque Gem: per processi in background in ROR

Elegante e divertente? Queste frasi non sono qualcosa che assoceresti a un linguaggio di programmazione. Giusto? Ma questo è esattamente ciò che è Ruby on Rails. Ruby on Rails, più comunemente chiamato semplicemente Rails, è un puro linguaggio di programmazione orientato agli oggetti con una sintassi pulita semplice e intuitiva. E intendendo semplice e facile da usare, significa che puoi preparare un'applicazione web molto prima che con qualsiasi altro linguaggio di programmazione. Per andare in diretta, tutto ciò di cui hai bisogno è un server web e un database. E, naturalmente, alcune gemme! Una delle parti migliori di Ruby è l'enorme elenco di codici categorizzati e riutilizzabili opportunamente definiti "gemme". La bellezza di Ruby on Rails sta nel fatto che con l'aiuto di queste gemme puoi creare applicazioni facilmente e con sforzi notevolmente inferiori rispetto ad altre tecnologie. Continua a leggere per conoscere Rasque, un gioiello per creare lavori in background. Resque crea processi in background utilizzando Redis. Poiché supporta più code, possiamo posizionarle su più code ed elaborarle anche in un secondo momento. E viene fornito con un'interfaccia di amministrazione per il monitoraggio e la gestione delle code. Resque è destinato a essere utilizzato in situazioni in cui è richiesto un volume elevato di voci di lavoro e fornisce meccanismi per garantire riflessività e coerenza del comportamento fornendo al contempo statistiche utilizzando una dashboard web. Quando abbiamo un lungo blocco di codice di elaborazione che non è necessario eseguirlo all'interno del ciclo di richiesta della nostra applicazione web, un sistema di accodamento con elaborazione in background è l'unica buona soluzione. Quindi otteniamo un'applicazione Ruby più veloce. Sebbene Resque sia in larga misura ispirato a DelayedJob, se abbiamo bisogno di più code nella nostra APP, Resque è probabilmente una scelta migliore. Scegli Richiedi se:
  • Sono necessarie più code
  • Non ti piacciono particolarmente le priorità numeriche
  • Lavori con code enormi
  • Lavori con Redis
  • Non rimarrai a corto di RAM
Dato che sono disponibili numerosi sistemi di code open source (delayed_job, Beanstalk), non abbiamo bisogno di scriverne uno nostro! Qui, verrà illustrato come impostare il sistema di accodamento delle richieste in un'applicazione Ruby on Rails. Richiedi configurazione:
bash: brew install redis redis-server /usr/local/etc/redis.conf resque-web rake resque:work QUEUE='*'
Gemfile:
gem 'resque', :require => “resque/server” Installa il nuovo gem: bundle install Crea un file di configurazione redis chiamato redis.yml in config: defaults: &defaults host: localhost port: 3002 development: <<: *defaults test : <<: *predefinito staging: <<: *predefinito produzione: <<: *defaults
Aggiungi un file inizializzatore chiamato resque.rb in 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[' host'], :port => config['port'])
Aggiungi resque.rake a lib/tasks:
require 'resque/tasks' task “resque:setup” => :environment
Richiesta in esecuzione:
avvia redis: redis-server avvia resque COUNT=5 QUEUE=* rake resque:workers vedi interfaccia utente web: resque-web
Come aggiungere lavori di richiesta:
Crea una classe di lavoro: class FeedsCollectionJob @queue = :feeds_collection_job def self.perform(start_date, end_date) mette “da #{start_date} a #{end_date}” #TODO il tuo lungo processo qui end end
Eseguilo utilizzando: Resque.enqueue(FeedsCollectionJob, start_date, end_date) Questo comando non si bloccherà, quindi puoi incorporare questo codice in un modello. Lavoratori: Possono essere distribuiti tra varie macchine, supportano le priorità principali, sono resistenti alle "perdite" di memoria e sono ottimizzati.
I lavoratori Resque sono compiti rastrellanti che durano per sempre. start loop do if job = riserva job.process else sleep 5 frequenza # = 5 end end shutdown
Per avviare un lavoratore:
$ QUEUE=file_serve rake resque:lavoro
Dovremo caricare la nostra applicazione in memoria. Una volta installato Resque come plugin Rails, possiamo eseguire questo comando dal nostro RAILS_ROOT:
$ QUEUE=file_serve ambiente rake resque:lavoro
Quindi, carica l'ambiente ora puoi avviare un lavoratore. Oltre a questo possiamo scrivere un'attività resque:setup con una dipendenza dall'attività rake dell'ambiente:
attività “resque:setup” => :environment
Introspezione: Dovrebbero esserci diversi modi per analizzare il comportamento di Resque. Consiglierei a tutti il posto migliore per farlo, la dashboard web Resque integrata. http://localhost:3000/resque Qui consentiremo di ispezionare code, lavoratori, lavori in corso, lavori non riusciti, tracce di stack e utili statistiche di redis. Possiamo fare lo stesso utilizzando la console;
Resque.info Resque.queues Resque.redis Resque.size(queue_name) Resque.peek(queue_name, start=1, count=1) Resque.workers Resque.working
Beh, il gioco è fatto! Questo articolo spera di fornire informazioni su resque, come configurarlo, in che modo questo gioiello è utile per aiutarti a creare un'app Ruby con prestazioni più veloci. Hai una grande idea per un'app e vuoi svilupparla il più velocemente possibile? Scegli Ruby on Rails e già che ci sei, sappi che RailsCarma è un'ottima scelta per lo sviluppo della tua app. Railscarma ha implementato Ruby on Rails sin dalle sue fasi nascenti per lo sviluppo, la formazione, l'implementazione e il contributo alla comunità Rails e la fornitura i migliori servizi di sviluppo Ruby on Rails. RailsCarma fornisce servizi Ruby on Rails end-to-end tra cui consulenza, architettura, costruzione, gestione ed estensione ad aziende di tutto il mondo. Puoi anche assumere sviluppatori Ruby on Rails con un processo di assunzione semplice. Contattaci per saperne di più. Leggi altri articoli simili:

Iscriviti per gli ultimi aggiornamenti

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItalian