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

hernantz hernantz en gmail.com
Sab Mayo 18 12:44:57 ART 2013


On Thu 16 May 2013 02:44:59 PM ART, DF-- wrote:
>
> 2013/5/15 hernantz <hernantz en gmail.com <mailto:hernantz en gmail.com>>
>
>     On Mon 13 May 2013 02:42:36 PM ART, hernantz wrote:
>
>         Hola!
>         Estoy usando Python 2.7.3, Celery 3.0.19 y Redis para poder
>         tener una
>         cola de trabajo asíncrona
>         e ir consultando el estado de la misma. Tomé el camino de usar una
>         "chain" de tareas, porque me pareció
>         lo indicado.
>         En este pastebin [0] muestro lo mínimo para visualizar mi
>         problema.
>
>         Como ven en la línea 50 y 51, los objetos difieren y no me
>         puedo dar
>         cuenta por qué.
>         Al final, lo único que necesito es tener lo más parecido a una
>         cola de
>         trabajo, y yo
>         poder consultar el status de cada tarea de esa cola (haciendo
>         polling).
>         Es válido tomar otros caminos y cualquier idea/pregunta es
>         bienvenida :)
>
>
>
>
> Dado que pensás hacer polling, sería más eficiente y compatible con tu
> modelo implementar el pattern observer?
>
> Home <http://sourcemaking.com/> › Design Patterns
> <http://sourcemaking.com/design_patterns> › Behavioral patterns
> <http://sourcemaking.com/behavioral_patterns>
>
>
>   Observer Design Pattern
>
>
>       Intent
>
>   * Define a one-to-many dependency between objects so that when one
>     object changes state, all its dependents are notified and
>     updated automatically.
>   * Encapsulate the core (or common or engine) components in a Subject
>     abstraction, and the variable (or optional or user interface)
>     components in an Observer hierarchy.
>
>
>
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar

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/





More information about the pyar mailing list