2017-01-25 14 views
0

Для этого вопроса упрощенно, у меня есть два типа компьютеров: тип A и B.
Существует один компьютер типа A, и многие из типа B.Блокировка считывателя-писателя с предпочтением писателям

B являются типом хостов, которые могут читать и писать с FTP. A - это компьютер, который можно просто прочитать с ftp.

Как вы уже могли догадаться, ftp - это общая область, которая должна быть защищена решением для блокировки чтения-записи.

Кто-нибудь знает о уже существующем python package, который обрабатывает этот сценарий, если нет, то у кого-нибудь есть пример, как он может быть реализован для таких нужд?

Я предполагаю, что некоторые блокировки должны быть реализованы как файлы на ftp, так как мы имеем дело с процессами с разных хостов.

Благодаря

+0

Некоторые программы используют простой файл типа '.lock' (иногда с некоторой информацией, которая использует ресурсы). Если файл не существует, вы можете создать его и использовать ресурсы. – furas

+0

@furas: Вы знаете о пакетах или реализациях уже вокруг? – JavaSa

ответ

0

Автор:

  1. Загрузить файл W. Если это не удается, подождите и повторите попытку.
  2. Загрузить файл R. Если это не удается, подождите и повторите попытку.
  3. Выполняйте как можно больше записей.
  4. Удалить W.
  5. Удалить R.

Читателя:

  1. Загрузить файл R. Если это не удается, подождите и повторите попытку.
  2. Проверьте наличие файла W. Если он существует, удалите R и вернитесь к шагу 1.
  3. Прочитайте. Если несколько операций чтения необходимо, вернитесь к шагу 2.
  4. Удалить R.

Вы можете использовать модуль Python ftplib (или SFTP, paramiko) для выполнения указанных выше операций.

+0

Нам нужно ограничить доступ к файлам блокировки, так как может быть, что один процесс хочет удалить блокировку, в то время как другой хочет ее удалить. Нам нужна какая-то нить/безопасность процесса, любые идеи о том, как реализовать это, чтобы избежать гоночных условий с использованием ftplib или других пакетов для обработки ftp? – JavaSa

+0

@JavaSa: Я не понимаю, что вы имеете в виду. Я изложил полную последовательность для приобретения и освобождения блокировок. Файловая система не позволяет двум различным программам создавать один и тот же файл. –