Вариант 3. Лучше всего иметь процесс, который следит за входящим общим ресурсом для файлов. Когда он видит файл, запишите его размер и / или дату изменения.
Затем, через некоторое время (например, 1 или 2 секунды), посмотрите снова. Запишите все файлы, которые были просмотрены ранее, и сравните их новые размеры / даты с модой, которую вы видели в прошлый раз.
Любой файл, который не изменялся в течение некоторого "достаточно длительного" периода времени (1 с? 5 с?), Считается "выполненным".
Как только у вас будет готовый файл, переместите / переименуйте этот файл в другой каталог. Именно из ЭТОГО каталога ваш процесс загрузки может быть запущен. Он «знает», что в этом каталоге находятся только полные файлы.
Имея этот двухэтапный процесс, вы можете позже, возможно, добавить другие правила для принятия файла, так как все эти правила должны пройти, прежде чем файл будет перемещен в правильную область подготовки (вы можете проверить формат, проверить размер и т. д.) за пределами простого правила существования файла.
Ваш последующий процесс может полагаться на существование файла как в качестве механизма запуска, так и в качестве механизма перезапуска. Когда процесс перезапускается после сбоя или завершается, он может предположить, что любые файлы во второй стадии являются либо новыми, либо неполными, и предпринять соответствующие действия в зависимости от своего внутреннего состояния. Когда обработка завершена, он может либо удалить файл, либо переместить его в «готовую» область для архивирования, либо нет.