¿Por qué Flock no limpia la lima de bloqueo?

¿Por qué Flock no limpia la lima de bloqueo?

Una vez completado el proceso, veo que el archivo de bloqueo no se elimina. ¿Hay alguna razón por la que flockse conserva el archivo? Además, ¿cómo se flocksabe si se ha adquirido un candado?

Aquí está el ejemplo de un crontabarchivo.

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

información relacionada