У меня есть несколько докеризированных приложений, которые выводят данные в общий каталог, и докеризированный сторожевой скрипт Python, который следит за этим каталогом и должен обрабатывать данные дальше после завершения вывода программы.
Крайне важно, чтобы файл был завершен до его дальнейшей обработки. Я попытался реализовать решение, подобное Окна сторожевого таймера Python ждут завершения копирования :
def on_modified(event):
sizeBefore = -1
while os.path.getsize(event.src_path) != sizeBefore:
sizeBefore = os.path.getsize(event.src_path)
time.sleep(1)
print(f"[+] File transfer of {event.src_path} completed")
который работает нормально для отдельных файлов, но ломается, когда ему нужно отслеживать несколько файлов. Ожидание завершения вывода программы, а затем копирование файла в отслеживаемую папку также не вариант, поскольку я имею дело с потенциально большими файлами, копирование которых займет не менее нескольких секунд, а затем у меня возникает та же проблема.
Любые идеи о том, как я могу настроить обработчик событий on_modified, чтобы он правильно смотрел, пока файл больше не будет изменен, работая с несколькими файлами в одном каталоге.
"*.tmp"
, чтобы ваш сторожевой скрипт знал, что они находятся в процессе создания и могут быть проигнорированы. Как только временный файл будет полностью создан, ваши приложения могут переименовать его в свое окончательное имя, и ваш сторожевой таймер сможет взять на себя управление. - person quamrana   schedule 31.08.2020on_renamed
события. - person MrBean Bremen   schedule 31.08.2020on_renamed
. - person MrBean Bremen   schedule 31.08.2020