Ошибка при открытии файла одним скриптом, при том, что другой скрипт не успел файл дописать

Прошу прощения за странный заголовок, не смог придумать более точный.

Проблема

Есть два скрипта.

Первый скрипт периодически пишет в некую директорию файлы pickle. Периодичность записи условно-случайна, от нескольких секунд до десятков минут.

Второй скрипт с определенной частотой смотрит в директорию и как только там что-то появляется, открывает файл и производит какие-то действия.

Если частота осмотра директории достаточно маленькая, то часто возникает ситуация, когда я получаю EOFError: Ran out of input.

Первый вопрос: правильно ли я понимаю, что данная ситуация возникает, когда первый скрипт создал файл, но еще не успел записать в него содержимое, а второй скрипт увидел, что файл уже есть и попытался открыть пустой файл?

Второй вопрос как лучше избежать такой ситуации? Вот такую обработку я написал - это нормально?

# Мы уже посмотрели в директорию и увидели там файл - filename
while True:
    try:
        with open(filename, 'rb') as f:
            data = pickle.load(f)
        break
    except EOFError:
        continue

Есть ли варианты правильнее?


Ответы (0 шт):