[pyar] [Celery] Obtener progreso de una cadena de tasks

DF-- dj.foguelman en gmail.com
Lun Mayo 20 15:31:32 ART 2013


> Hola!, gracias por la respuesta.
> Mira esa seria la posta, esta muy bueno y me hizo pensar que se puede
> reemplazar la tabla algo mas simple:
>
>    chains = {}
>    chains['id_unico'] = chain(task1, task2, task3).apply_async()  # guardo
> este objeto chain que se que funciona
>
> y despues consulto asi:
>
>    unpack_chain(chains['id_unico'**])
>
> para obtener el estado de las tareas, pero tiene el tema de que ese dict
> chains va a ir creciendo...
> No es el observer pattern que vi [0], pero el chain() seria mi observer
> creo.
> Al fin y al cabo, el celery.AsyncResult('id_unico') me devuelve un objeto
> chain que se olvido de las referencias hacia sus tareas :(
>
> Saludos
>
> [0]  http://code.activestate.com/**recipes/131499-observer-**pattern/<http://code.activestate.com/recipes/131499-observer-pattern/>
>
>
>
Cabe decir que no conozco celerity ni usé redis demasiado pero
conceptualmente (sin mandarme cagadas), el pattern observer es muy
abstracto, pensá en la intención del patrón y entendé como esta intención
se aplica en tu problema, yo entiendo lo siguiente:

vos tenés cada task, querés que un externo conozca el estado de la tarea
sin hacer polling

agarrás y registrás que la tarea va a ejecutar en algún momento al
observador

delegás el comportamiento de la tarea a una entidad superior que informa al
observador que determinada acción empezó o terminó
tu observador te informa cuando una tarea se termina por que está
escuchando cuando van terminando las tareas.


avisame si esto te genera nuevas dudas o te da nuevas inquietudes =)

Abrazo, D.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130520/49dbc247/attachment.html>


More information about the pyar mailing list