[pyar] Puedo evitar ejecución del bloque con un Context Manager?

fisa fisadev en gmail.com
Vie Jun 14 23:29:13 ART 2013


On Jun 14, 2013 10:10 PM, "hernantz" <hernantz en gmail.com> wrote:
>
> On Fri 14 Jun 2013 06:47:21 PM ART, QliX=D! [aka EHB] wrote:
>>
>> Workflow bssed programming? Hay un par de frameworks orientados a la
>> tarea de ar mm ar un flujo de trabajo que sea retomable en multiples
>> puntos del mismo. Busco los pinks cuando llego a casa y te lo paso.
>>
>> El jun 14, 2013 5:40 PM, "fisa" <fisadev en gmail.com
>> <mailto:fisadev en gmail.com>> escribió:
>>
>>
>>     Busqué medio rápido y no vi que se pueda, así que pregunto por si
>>     alguno se le ocurre alguna manera.
>>
>>     La idea: un context manager para usar en scripts de deploy (ej:
>>     fabric), que evite que se ejecute código que ya fue ejecutado alguna
>>     otra vez en el servidor.
>>
>>     Ejemplo:
>>
>>     with avoid_twice('create_postgres_cluster'):
>>         sudo('bla bla bla create cluster')
>>         sudo('bla bla more things')
>>
>>     El comportamiento que quiero de avoid_twice sería el siguiente:
>>     * en el ingreso: busco nombre de acción ('create_postgres_cluster')
en
>>     un archivo, si no está, sigue todo normal. Si ya está, *evito* que se
>>     ejecute el contenido del bloque
>>     * en la salida: guardo nombre de la acción en el archivo (así
evitando
>>     futuras repeticiones)
>>
>>     Por qué? me ahorra repetir esta lógica en muchos lados:
>>
>>     if was_executed('x'):
>>        # code code code
>>        save_executed('x')
>>
>>     (no me gusta tener que siempre recordar meter el save, y tener que
>>     siempre poner 2 veces el nombre de la acción)
>>
>>     Todo es una pavada, salvo por el "Si ya está, *evito* que se ejecute
>>     el contenido del bloque". Alguna idea de cómo lograr eso
>>     específicamente?
>>
>>     Saludos!
>>
>>     --
>>     fisa  -  Juan Pedro Fisanotti
>>     _______________________________________________
>>     pyar mailing list pyar en python.org.ar <mailto: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
>>
>>
>>
>> _______________________________________________
>> 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
>
>
> done = []
>
> def not_done(key):
>  if key not in done:
>    done.add(key)
>    return True
>
> if not_done('setup_database'):
>    setup_database()
>
> if not_done('setup_database'):
>    setup_database()  # este ya no corre
>

Pero el tema de eso es que marca la acción como ya hecha antes de hacerla,
cosa que no está bien para un script de deploy, jeje.

Justamente mi necesidad viene de casos donde una acción falla, arreglo
algo, y vuelvo a correr el script, pero quiero que no haga de vuelta cosas
que una vez hechas no se pueden repetir (ej: crear el cluster de postgres).
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130614/0c1497a4/attachment.html>


More information about the pyar mailing list