Resque Gem : För bakgrundsprocesser i ROR

Elegant och roligt? Dessa fraser är inte något du skulle associera med ett programmeringsspråk. Höger? Men det är precis vad Ruby on Rails är. Ruby on Rails, mer vanligt kallad som bara Rails, är ett rent objektorienterat programmeringsspråk med enkel och användarvänlig ren syntax. Och genom att betyda enkel och användarvänlig betyder det att du kan få en webbapplikation klar mycket snabbare än med något annat programmeringsspråk. För att gå live behöver du bara webbserver och databas. Och såklart några pärlor! En av de bästa delarna med Ruby är den enorma listan med kategoriserade, återanvändbara koder som lämpligen kallas "ädelstenar". Skönheten med Ruby on Rails ligger i det faktum att du med hjälp av dessa ädelstenar kan skapa applikationer enkelt och med betydligt mindre ansträngningar jämfört med andra teknologier. Läs vidare för att veta om Rasque som är en pärla för att skapa bakgrundsjobb. Resque skapar bakgrundsjobb med Redis. Eftersom det stöder flera köer kan vi placera dem på flera köer och bearbeta dem senare också. Och det kommer med ett administrationsgränssnitt för övervakning och hantering av köerna. Resque är avsedd att användas i situationer där stora mängder jobbanmälan krävs, och tillhandahåller mekanismer för att säkerställa reflektion och konsekvent beteende samtidigt som statistik tillhandahålls med hjälp av en webbinstrumentpanel. När vi har ett långt bearbetningsblock med kod som vi inte behöver för att köra det i vår webbapplikationsförfrågan, är ett kösystem för bakgrundsbearbetning den enda bra lösningen. Därför får vi snabbare rubinapplicering. Även om Resque är inspirerad av DelayedJob till stor del, om vi behöver flera köer i vår APP, är Resque förmodligen ett bättre val. Välj Resque om:
  • Du behöver flera köer
  • Du är inte särskilt sugen på numeriska prioriteringar
  • Du jobbar med enorma köer
  • Du arbetar med Redis
  • Du kommer inte att få ont om RAM
Eftersom det finns ett antal kösystem med öppen källkod (delayed_job, beanstalk) behöver vi inte skriva vårt eget! Här kommer det att gå över hur man ställer in resque-kösystemet i en Ruby on Rails-applikation. Resque Setup:
bash: brew installera redis redis-server /usr/local/etc/redis.conf resque-web rake resque:work QUEUE='*'
Gemfil:
gem 'resque', :require => "resque/server" Installera den nya gem: bundle install Skapa en redis config-fil som heter redis.yml i config: defaults: &defaults host: localhost port: 3002 development: <<: *defaults test : <<: *defaults staging: <<: *defaults production: <<: *defaults
Lägg till en initialiseringsfil som heter resque.rb i config/initializers:
Dir[File.join(Rails.root, 'app', 'jobs', '*.rb')].each { |fil| kräver fil } config = YAML::load(File.open(“#{Rails.root}/config/redis.yml”))[Rails.env] Resque.redis = Redis.new(:host => config[' host'], :port => config['port'])
Lägg till resque.rake till lib/tasks:
kräver 'resque/tasks' uppgift "resque:setup" => :miljö
Kör Resque:
starta redis: redis-server start resque COUNT=5 QUEUE=* rake resque:arbetare se webbgränssnittet: resque-web
Så här lägger du till Resque-jobb:
Skapa en jobbklass: class FeedsCollectionJob @queue = :feeds_collection_job def self.perform(start_date, end_date) sätter "från #{start_date} till #{end_date}" #TODO din långa process här slut slut
Kör det med: Resque.enqueue(FeedsCollectionJob, start_date, end_date) Detta kommando kommer inte att blockera så att du kan bädda in den här koden i en modell. Arbetare: Den kan fördelas mellan olika maskiner, stöder kärnprioriteringarna, är motståndskraftig mot minnes "läckor" och är optimerad.
Resque-arbetare är rake-uppgifter som pågår för evigt. start loop gör om jobb = reservera jobb.process annars vila 5 # frekvens = 5 slut slut avstängning
Så här startar du en arbetare:
$ QUEUE=file_serve rake resque:work
Vi kommer att behöva ladda vår applikation i minnet. När du har installerat Resque as Rails-plugin kan vi köra det här kommandot från vår RAILS_ROOT:
$ QUEUE=file_serve rake miljö resque:work
Därför laddar det miljön nu kan du starta en Worker. Annat än detta kan vi skriva en resque:setup-uppgift med ett beroende av miljörake-uppgiften:
uppgift "resque:setup" => :miljö
Introspektion: Det bör finnas ett antal sätt att introspektera Resques beteende. Jag skulle rekommendera det bästa stället att göra detta på, den inbyggda Resque webbinstrumentpanelen. http://localhost:3000/resque Här skulle vi tillåta att inspektera köer, arbetare, aktuella arbetsjobb, misslyckade jobb och stackspår, och användbar redis-statistik. Vi kan göra samma sak genom att använda konsolen;
Resque.info Resque.queues Resque.redis Resque.size(queue_name) Resque.peek(queue_name, start=1, count=1) Resque.workers Resque.working
Nåväl där har du det! Den här artikeln hoppas kunna ge information om resque, hur man konfigurerar den, hur denna pärla är fördelaktig och hjälper dig att bygga snabbare presterande ruby-app. Har du en bra idé till en app och vill få den utvecklad så snabbt som möjligt? Gå till Ruby on Rails och medan du håller på, vet att RailsCarma är ett utmärkt val för din apputveckling. Railscarma har implementerat Ruby on Rails från dess begynnande stadier för utveckling, utbildning, distribution och bidrag tillbaka till Rails Community och tillhandahåller bästa Ruby on Rails utvecklingstjänster. RailsCarma tillhandahåller Ruby on Rails-tjänster, inklusive konsulttjänster, arkitektur, byggnad, förvaltning och utbyggnad, till företag över hela världen. Du kan också anlita Ruby on Rails-utvecklare med en lättanställd process. Kontakta oss att veta mer. Läs fler liknande artiklar:

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

sv_SESwedish