2014-07-07 18 views
6

Devo implementare alcune elaborazioni in background per 1) inviare e-mail, 2) fare alcune chiamate API. E, qualunque sia il sistema che utilizzo, mi unirò anche a una sorta di cron scheduler (ogni volta che è probabile). Sono curioso, riconosco che c'è una serie di gemme di elaborazione di sfondo davvero interessanti (Delayed Job, Sidekiq, Resque), ma capisco anche che è possibile eseguire l'elaborazione in background con un solo rake per il video di Ryan Bate: http://railscasts.com/episodes/127-rake-in-background.Qual è la differenza tra l'esecuzione del task rake in background e l'utilizzo di gem come Job differito, Resque o Sidekiq?

Quali sono i pro/contro dell'utilizzo di una gemma VS un'attività di rake nel processo in background? Una cosa di quest'ultimo riguardo a me è che devi girare un nuovo ambiente ogni volta che viene chiamato un rake, che è terribilmente costoso in memoria.

Si prega di notare, non ho bisogno di un confronto delle gemme. Questa serie ha fatto un ottimo lavoro qui: http://www.sitepoint.com/series/comparing-ruby-background-processing-libraries/

risposta

3

Parallelismo. Puoi avere N lavoratori che inviano email in parallelo. Con rake hai una singola discussione, l'invio di molte e-mail richiederà un po 'di tempo.

+0

Sì, il tempo non è molto importante in quanto è già asincrono e, onestamente, non ho molte e-mail. Pensiero veloce, la rotazione di un nuovo ambiente non è un grosso problema con l'approccio al rake? – james

1

Un'altra enorme differenza che è stata una pausa per me è stata che il compito di rastrello in background è stato eseguito con lo stesso droke di Heroku, ma gli altri componenti aggiuntivi richiedono di avere un dyno di lavoro separato.

EDIT, nel caso qualcuno si googling, appena saputo che in Sidekiq è possibile utilizzare lo stesso banco di lavoro, vedere questo tutorial: https://coderwall.com/p/fprnhg

0

Un'altra grande differenza potrebbe essere gli strumenti di un gioiello come sidekiq dà di gestire il lavori in background.

Ad esempio, se è necessario elaborare un processo in background pianificato per, ad esempio, leggere più file CSV ogni giorno, forse è necessario gestire o almeno vedere l'esito di tale elaborazione, leggere le metriche, riprovare in caso di errore. , ecc. Immagino che dovresti scriverlo tu stesso con un compito di rake.

Nel mio caso (sono arrivato qui su Google), ho bisogno di un compito molto semplice e non così pesante da fare programmato e asincrono, quindi vado con un compito rake e mi salvo di passare attraverso l'installazione, la configurazione e mantenendo una gemma come sidekiq (facile come potrebbe essere) con le sue dipendenze sul server.