Взаимная защита общего доступа к файлам - PullRequest
0 голосов
/ 28 ноября 2018

Я пишу RunManager на python, который должен планировать задачи на удаленном сервере (используя SSH. Каждая задача - процесс).

Для планирования я использую общие слоты файл на удаленном сервере, который обозначает количество доступных слотов на этом сервере.

Теперь каждый пользователь запускает экземпляр RunManager, поэтому возможен параллельный доступ к файлу слотов.Есть ли способ для меня атомарно увеличить / уменьшить количество слотов (предотвратить состояние гонки)?

Поиск в Google «Взаимная защита общего файла» дает крайне несвязанные результаты.

1 Ответ

0 голосов
/ 28 ноября 2018

Этот полезный вопрос SO описывает несколько возможных способов блокировки файла в Python, но многие ответы указывают на сложность надежного выполнения этого (есть много, что может пойти не так).

Я бы посоветовал использовать хранилище в памяти (например, Redis) или базу данных, с которой каждый из ваших процессов мог бы общаться.Еще одна альтернатива состоит в том, чтобы иметь еще один процесс, который контролирует операции чтения и записи, и с которыми взаимодействуют другие процессы, но выполнение этого является довольно трудоемким процессом, и, в конце концов, в конечном итоге представляет собой сервер базы данных.

Это кажется мне ситуацией, когда вы должны просто использовать правильный инструмент для работы (база данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...