# Concorrenza

**URL:** <https://www.ruby-forum.com/t/concorrenza/220712>\
**Category:** IT\
**Created:** [June 18, 2012, 9:13am UTC](https://www.ruby-forum.com/t/concorrenza/220712 "2012-06-18T09:13:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [June 18, 2012, 9:13am UTC](https://www.ruby-forum.com/t/concorrenza/220712/1 "2012-06-18T09:13:57Z")

</div>

Ciao a tutti,  
complimenti per il Ruby Day, un’iniziativa veramente fantastica e ben  
riuscita.

Sto sviluppando un applicativo che prevede varie attivit di download,  
processing con Imagemagick, e upload di immagini, il tutto  
periodicamente  
ogni X minuti e all’infinito per ogni utente.  
L’iterazione corrente usa Resque pi resque-scheduler per il  
re-enqueueing  
dei job, con due worker, quindi due CPU pi il lavoro di ImageMagick che  
gi multithreaded e onestamente mi pare piuttosto efficiente, ma la  
scalabilit mi preoccupa un po’.

Conosco piuttosto bene Celluloid dal punto di vista della concorrenza,  
ma  
finora l’avevo solamente utilizzato per gestire flussi di eventi di  
telefonia o XMPP, che sarebbe poi il suo impiego primario essendo  
ispirato  
da Erlang.

Siccome il budget veramente molto stringato e ho anche poco tempo  
libero,  
prima di imbarcarmi in una re-implementazione con Celluloid mi  
piacerebbe  
avere un’opinione da parte vostra sull’eventuale possibilit di  
prestazioni  
migliori usando un sistema actor-based, trattandosi di una procedura con  
svariati tempi morti bloccanti (download-processing-upload). Il tutto  
andrebbe spostato sotto JRuby per sfruttare i thread nativi, oppure  
semplicemente lanciato in pi istanze.

Che ne pensate?

Luca

---

<div class="post-metadata">

**Author:** ![lucapette](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/58f4c7/32.png) [@lucapette](https://www.ruby-forum.com/u/lucapette)\
**Post date:** [June 18, 2012, 5:35pm UTC](https://www.ruby-forum.com/t/concorrenza/220712/2 "2012-06-18T17:35:18Z")

</div>

Ciao Luca,

Grazie per i complimenti da parte di tutto lo staff RubyDay!

La soluzione migliore consiste nell’uso del Reactor Pattern:  
EventMachine o  
Nodejs che sia.  
In questo modo ogni worker potrebbe gestire fino molti job in  
contemporanea, poich  
la maggior parte dei task I/O il download delle immagini e la  
comunicazione con ImageMagick.  
Infine, siccome sei asincrono, potresti evitarti del tutto la gestione  
via  
resque, e svolgere tutto  
direttamente dai processi principali alla bisogna.

Ciao,

Matteo
