[pyar] File lock

Juan Carlos Ojeda juancarlospaco en gmail.com
Lun Jul 5 21:43:24 ART 2010


Ese File Lock da error si usas NFS.

Yo uso un directorio,
la creacion de directorios en LiGNUx es Atomico.



#!/bin/bash
# -*- coding: utf-8 -*-
# Licence = GPL v3
lockdir=/tmp/mylock.lock
if mkdir "$lockdir"  # mkdir is atomic on LiGNUx
 then  # Launch the app, create the dir
     echo " "
     echo >&2 " Successfully acquired lock: $lockdir..."
     echo " "
     /usr/bin/env python /path/to/my/app.py  ### > /dev/null 2>&1
     echo " "
     rm -rfv /tmp/mylock.lock
 else  # Dont start the app, the dir exist
     echo " "
     echo >&2 -e '\033[40m\033[1;31m WARNING: Cannot acquire Lock, giving up
on $lockdir... \033[0m'
     echo " "
     echo " The MyApp is already running?"
     echo " "
     xkbbell
     sleep 3
     exit 0
 fi





El 5 de julio de 2010 21:35, Marcelo Fernandez <
marcelo.fidel.fernandez en gmail.com> escribió:

> El día 5 de julio de 2010 21:32, Roberto Alsina
> <ralsina en netmanagers.com.ar> escribió:
> > On Monday 05 July 2010 21:13:59 Andrés Gattinoni wrote:
> >> Para comunicar muy sencillamente dos aplicaciones (una aplicación web
> >> en PHP y un script en Python), quiero utilizar un archivo. La idea es
> >> que la aplicación en PHP pueda encolar comandos en el archivo, y que
> >> el script en Python los desencole y procese. Sé que no es la opción
> >> más óptima, pero por cuestiones que exceden el prístino, formal y
> >> lógico mundo del código, debo hacerlo así.
> >
> > Sí, podés pero hay maneras mejores. Por ejemplo, la que uso yo para esa
> clase
> > de problemas es:
> >
> > Del lado del "encolador":
> >
> > * Creo un archivo temporal seguro
> > * Escribo el comando adentro
> > * Lo muevo a una carpeta
> >
> > Del lado del "desencolador":
> >
> > * Hago un listado de la carpeta
> > * Abro el archivo más nuevo
> > * Le hago un "unlink"
> > * Lo leo
> > * Lo cierro
> >
> > Esto no requiere locking, no tiene race conditions, y te garantiza que el
> > cuelgue de uno de los dos componentes no te cuelgue el otro.
>
> ¿Todo esto no lo hace automágicamente el SO mediante un named pipe[1][2]?
>
> [1] http://en.wikipedia.org/wiki/Named_pipe
> [2] http://docs.python.org/library/os.html#os.pipe
>
> Saludos
> --
> Marcelo F. Fernández
> Buenos Aires, Argentina
> Licenciado en Sistemas - CCNA
>
> E-Mail: marcelo.fidel.fernandez en gmail.com
> Blog: http://blog.marcelofernandez.info
> Twitter: http://twitter.com/fidelfernandez
> _______________________________________________
> 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/
>



-- 
.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100705/d67ff350/attachment.html>


More information about the pyar mailing list