Necesita una forma de determinar si un archivo está hecho para ser escrito

La situación en la que estoy es: hay un proceso que está escribiendo en un archivo, a veces el archivo es bastante grande, por ejemplo, de 400 a 500 MB. Necesito saber cuando se termine de escribir. ¿Cómo puedo determinar esto? Si miro en el directorio, lo veré allí, pero es posible que no se haya escrito. Además, esto debe hacerse de forma remota, como en la misma LAN interna pero no en la misma computadora y, por lo general, el proceso que se desea saber cuando se realiza la escritura del archivo se ejecuta en un cuadro de Linux con un proceso que escribe el archivo y el propio archivo en un cuadro de windows. No samba no es una opción. La comunicación xmlrpc a un servicio en ese cuadro de Windows es una opción, así como el uso de snmp para verificar si es viable.

Idealmente

  • Funciona en Linux o Windows, lo que significa que la solución es independiente del sistema operativo.
  • Funciona para cualquier tipo de archivo.

Suficientemente bueno:

  • Funciona solo en Windows, pero se puede hacer a través de alguna biblioteca o lo que sea que se pueda acceder con Python.
  • Funciona solo para archivos PDF.

La mejor idea actual es abrir periódicamente el archivo en cuestión desde algún proceso en el cuadro de Windows y mirar los últimos bytes que comprueban la etiqueta final PDF y tener en cuenta las diferencias de eol porque el archivo puede haber sido creado en Linux o Windows.

Probablemente hay muchos enfoques que puede tomar. Intentaría abrir el archivo con acceso de escritura. Si eso tiene éxito, nadie más está escribiendo en ese archivo.

Cree un servicio web alrededor de este concepto si no tiene acceso directo al archivo entre las máquinas.

Terminé resolviéndolo por nuestra situación. Resultó que el proceso en el que se estaban escribiendo los archivos se había abierto exclusivamente, por lo que todo lo que teníamos que hacer era intentar abrirlos para el acceso de lectura, cuando se negaron a estar en uso.