Por que o rebanho não limpa o arquivo de bloqueio?

Por que o rebanho não limpa o arquivo de bloqueio?

Após a conclusão do processo, vejo que o arquivo de bloqueio não foi excluído. Existe alguma razão para flockmanter o arquivo? Além disso, como flocksabe se há um bloqueio adquirido?

Aqui está o exemplo de um crontabarquivo

* * * * * flock python <script_name>.py

Responder1

Para a maioria dos casos de uso do flock, é muito importante que o arquivo de bloqueionãoser “limpo”. Caso contrário, imagine este cenário:

  • o processo A abre o arquivo de bloqueio, descobre que ele não existe e o cria.
  • o processo A adquire o bloqueio
  • o processo B abre o bloqueio (descobre que ele já existe)
  • o processo B tenta adquirir o bloqueio, mas tem que esperar
  • processo A libera o bloqueio
  • o processo B adquire o bloqueio instantaneamente
  • o processo A exclui o arquivo de bloqueio
  • o processo C abre o arquivo de bloqueio, descobre que ele não existe e cria um novo. Observe que agora ele está mantendo aberto umdiferentelock arquivo que aquele que o processo B bloqueou.
  • o processo C tenta adquirir o bloqueio e consegue... mas deveria ter esperado, porque o processo B ainda tem [uma encarnação anterior do] arquivo de bloqueio aberto e bloqueado.

informação relacionada