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

Hystrix ego en hystrix.com.ar
Sab Jun 15 13:05:40 ART 2013


2013/6/14 fisa <fisadev en gmail.com>
>
> 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)


Interesante problema, lo que se me ocurrio es que el context manager
devuelva True si ya se ejecuto la tarea y con eso agregas un if antes
de ejecutar las instrucciones que no se deben repetir. Te agrega un if
pero te evita tener que crear funciones para cada bloque de cosas que
no queres ejecutar dos veces.

El codigo aca https://gist.github.com/fcasco/5788558 porque no pude
hacer que Gmail respete la indentacion de las lineas


More information about the pyar mailing list