Piszę Runmanager w Pythonie, który powinien zaplanować zadania na zdalnym serwerze (za pomocą SSH. Każde zadanie jest procesem).

W przypadku planowania używam pliku Udostępniane Slots na serwerze zdalnym, który oznacza liczbę dostępnych gniazd na tym serwerze.

Teraz każdy użytkownik prowadzi instancję RunManager, więc może być dostęp do pliku gniazda. Czy jest dla mnie sposób, aby atomowo zwiększyć / zmniejszyć liczbę slotów (zapobiegaj kondycji rasowej)?

Wyszukiwanie "Wzajemne zabezpieczenie pliku współdzielonego" w Google daje wyjątkowo niepowiązane wyniki.

0
Elad Weiss 28 listopad 2018, 19:05

1 odpowiedź

Najlepsza odpowiedź

To jest pomocne, więc pytanie szczegóły Kilka możliwych sposobów zablokowania pliku w Pythonie, ale Wiele odpowiedzi wskazują na trudności z niezawodnie robienia (jest wiele, co może pójść źle).

Doradzałbym za pomocą sklepu w pamięci (np. Redis) lub bazy danych, którą każdy z twoich procesów może porozmawiać. Kolejną alternatywą jest jeszcze inny proces, który kontroluje odczyty i pisze, oraz do których inne procesy komunikują się, ale robi to sprawiedliwą ilość pracy, a zasadniczo wynosi w końcu serwer bazy danych.

Wydaje mi się to jak sytuacja, w której należy użyć odpowiedniego narzędzia do pracy (bazy danych).

2
Jonah Bishop 28 listopad 2018, 19:15