2011-12-30 2 views

risposta

11

pagina Resque github dice (https://github.com/defunkt/resque)

... i lavori devono accettare solo gli argomenti che possono essere JSON codificato.

Inoltre, c'è un effetto da tenere in considerazione: l'oggetto che si passa viene copiato. Diciamo, è un record in un database. Se in seguito, quando il lavoro verrà eseguito, questo oggetto verrà modificato nel database, il lavoro non lo noterà, funzionerà sulla sua copia. A seconda delle esigenze, questo potrebbe essere il comportamento desiderato o potrebbe non esserlo.

Se si passa uno id di quell'oggetto, è possibile recuperarne l'ultima versione nel lavoro.

2

Lo svantaggio principale che riesco a vedere, oltre a passare oggetti di grandi dimensioni che verranno serializzati rispetto agli id, è che gli oggetti più probabili non saranno sincronizzati, poiché ovviamente il lavoro può essere eseguito in un secondo momento.

Nella maggior parte dei casi, è necessario utilizzare gli ID.

0

Il passaggio di oggetti completi alla resque può comportare un carico pesante in Redis e overhead di serializzazione. Questo potrebbe non essere un problema per te, ma devi tenerlo a mente.

Personalmente preferisco l'identificazione degli ID.

3

quello che sto facendo è Marshal.dump(object) e dall'altra parte faccio un Marshal.restore(object) funziona come un fascino ed è veloce ...

esempio:

@chart = chart_factory.build(chart_config) 
    marshal_dump = Marshal.dump(@chart) 
    Resque.enqueue(ChartsWorker, marshal_dump, url)