[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