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

fisa fisadev en gmail.com
Vie Jun 14 17:40:15 ART 2013


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


More information about the pyar mailing list