Una vez completado el proceso, veo que el archivo de bloqueo no se elimina. ¿Hay alguna razón por la que flock
se conserva el archivo? Además, ¿cómo se flock
sabe si se ha adquirido un candado?
Aquí está el ejemplo de un crontab
archivo.
* * * * * flock python <script_name>.py
Respuesta1
Para la mayoría de los casos de uso flock
, es muy importante que el archivo de bloqueonoser "limpiado". De lo contrario, imagina este escenario:
- El proceso A abre el archivo de bloqueo, descubre que no existe y lo crea.
- el proceso A adquiere el bloqueo
- El proceso B abre el candado (descubre que ya existe).
- El proceso B intenta adquirir el bloqueo pero tiene que esperar.
- El proceso A libera el bloqueo.
- El proceso B adquiere el bloqueo al instante.
- El proceso A elimina el archivo de bloqueo.
- El proceso C abre el archivo de bloqueo, descubre que no existe y crea uno nuevo. Tenga en cuenta que ahora mantiene abierto undiferentelock archivo que el que el proceso B ha bloqueado.
- El proceso C intenta adquirir el bloqueo y lo logra... pero debería haber tenido que esperar, porque el proceso B todavía tiene [una encarnación anterior de] el archivo de bloqueo abierto y bloqueado.