[pyar] Puedo evitar ejecución del bloque con un Context Manager?
Andres Riancho
andres.riancho en gmail.com
Sab Jun 15 09:22:41 ART 2013
Si mal no recuerdo, Fabric ya tiene implementado esto de "correr solo una
vez". Fíjate los docs
El jun 14, 2013 11:29 p.m., "fisa" <fisadev en gmail.com> escribió:
>
> 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).
>
> _______________________________________________
> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20130615/06fd63dc/attachment.html>
More information about the pyar
mailing list