real - Varios usuarios de Python se agregan al mismo archivo al mismo tiempo
matplotlib ejes (4)
Dependiendo de la ubicación de su plataforma / sistema de archivos, esto puede no ser factible de manera segura (por ejemplo, NFS). ¿Quizás puedas escribir en diferentes archivos y fusionar los resultados después?
Estoy trabajando en un script de Python al que se accederá a través de la web, por lo que habrá varios usuarios que intentarán adjuntar al mismo archivo al mismo tiempo. Mi preocupación es que esto podría causar una condición de carrera en la que si varios usuarios escribieran en el mismo archivo al mismo tiempo y pudiera dañar el archivo.
Por ejemplo:
#!/usr/bin/env python
g = open("/somepath/somefile.txt", "a")
new_entry = "foobar"
g.write(new_entry)
g.close
¿Tendré que usar un archivo de bloqueo para esto ya que esta operación parece arriesgada?
No indicó qué plataforma utiliza, pero aquí hay un módulo que puede usar que es multiplataforma: Bloqueo de archivos en Python
Puede utilizar el bloqueo de archivos :
import fcntl
new_entry = "foobar"
with open("/somepath/somefile.txt", "a") as g:
fcntl.flock(g, fcntl.LOCK_EX)
g.write(new_entry)
fcntl.flock(g, fcntl.LOCK_UN)
Tenga en cuenta que en algunos sistemas, el bloqueo no es necesario si solo está escribiendo buffers pequeños, porque los apéndices de estos sistemas son atómicos .
Si está realizando esta operación en Linux, y el tamaño del caché es más pequeño que 4KB, la operación de escritura es atómica y usted debería ser bueno.
Más para leer aquí: ¿Es el archivo agregado atómico en UNIX?