2015-12-08 6 views
0

У нас есть приложение python, которое проверяет каталог (C: \ sample \ folder) каждые 5 секунд, есть также это внешнее приложение (приложение .net), которое помещает файл в тот же каталог (C: \ sample \ folder).Несколько исполняемых файлов, одновременно получающих одну и ту же папку

Будет ли конфликт, когда два приложения будут обращаться к одной и той же папке одновременно (случайно)?

Конфликты, как:

  • внешнее приложение не сможете поместить файл, потому что приложение питона в настоящее время ходить через тот же каталог?
+2

не должно быть проблемой, если оба доступа к одному и тому же файлу. поэтому вы должны правильно позаботиться о правильности обработки I/O-Exceptions и подумать о каком-то ожидании и повторном поведении –

+1

Нет. Единственным конфликтом может быть, внешнее приложение начинает записывать файл в каталог, а приложение python проверяет каталог и реализует новый файл и пытается получить доступ к новому файлу до его полной записи. –

+0

Внешнее приложение просто копирует файл в каталог. Никакое письмо не связано. Спасибо, что подтвердили @MarcoForberg и Oguz. – essramos

ответ

2

Для внешнего приложения должно быть создано и записать в файл. Если приложение Python равно , читает файл, приложение .NET, возможно, не сможет его записать, в то время как Python его читает, но оба процесса открывают файл совместно.

Аналогично, если приложение Python начнет считывать только что созданный файл, оно может либо обнаружить, что оно не сможет сделать это до тех пор, пока приложение .NET не завершит запись на него, либо не прочитает неполные данные. Опять-таки, изменения, возможно, потребуются для обоих процессов, чтобы позволить читать вообще.

Стоит тщательно протестировать все ваши опасения, возможно, связанные с созданием «поддельного» внешнего приложения, которое записывается в файл очень медленно, но открывает его так же, как и реальный.

+0

Спасибо @ Jon Skeet. Внешний экземпляр просто скопирует файл в тот же каталог, без записи. Спасибо, что подтвердили это. – essramos

+0

@anon: Если он копирует файл, это * * записывается в него. Файлы не существуют, если они не написаны :) Теперь, если это была операция «move» в той же файловой системе, эта * может быть атомарной, и в этом случае вам не нужно беспокоиться ... но копии не являются , –

+0

О, я вижу @Jon Skeet, поэтому это означает, что когда внешнее приложение копирует файл в каталог и видит его на python, возможно ли, что он пытается получить к нему доступ одновременно? Конечно, python не сможет открыть его правильно? – essramos

Смежные вопросы