[pyar] File lock

Andrés Gattinoni andresgattinoni en gmail.com
Lun Jul 5 21:13:59 ART 2010


Qué tal, gente?

Otra vez con una pregunta de newbie. Esta es menos específicamente de
Python y más sobre Linux (o Posix?), pero creo que está bastante
on-topic porque es para algo que quiero hacer en python.

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í.

La cuestión es, ¿cómo hago para que el archivo en cuestión no sea
escrito por la aplicación de PHP mientras el script de Python está
desencolando y viceversa?

Mi suposición es que es cuestión de lockear el archivo, pero no tengo
mucha idea de cómo funciona ese tema.

Googleando encontré esto: http://docs.python.org/library/fcntl.html#fcntl.lockf

Lo que interpreto de allí es que cuando corre mi script en Python debería hacer:
file = open('queue.txt')
fcntl.lockf(file, fcntl.LOCK_EX)
... # cosas locas
fcntl.lockf(file, fcntl.LOCK_UN)
file.close()

Eso es así? Ese método sería el más adecuado?
Si tengo que leer y luego escribir (para desencolar tengo que obtener
los comandos y borrarlos del archivo), me conviene lockear antes o
después de leer?
Para cerrar el archivo abierto para lectura y abrirlo para escritura,
tengo que deslockear y volver a lockear?
Estoy miccionando fuera del receptáculo?

Gracias de antemano,

Andrés



More information about the pyar mailing list