Выборы лидера без гражданства с python - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь сделать программу выборов лидера без гражданства в python.

Сценарий: Предположим, у меня есть программа python, запущенная на 3 терминалах, все процессы претендуют на звание лидера, но служба который сначала блокирует и аннотирует объект с помощью метки времени, а также назначает себя лидером и периодически обновляет метку времени, как продление аренды. Другие 2 службы видят, что объект был помечен меткой времени, они сохраняют эту метку времени и снова возвращаются, чтобы проверить, обновляется ли она периодически. Если отметка времени на каждой проверке больше, чем на предыдущей, это означает, что лидер в порядке, если нет, тогда должен быть избран новый лидер и назначается какая бы служба первой получила объект.

Проблемы: Я Не знаете, как я могу это реализовать? Как я могу постоянно проверять объект в фоновом режиме, а также выполнять такую ​​задачу, как обслуживание HTTP-запросов.

У меня есть три случая:

  1. Когда служба лидирует:
  • Непрерывно обслуживать HTTP-запросы и периодически аннотировать объект новой меткой времени.
Когда сервис является подписчиком:
  • Периодически проверять объект, если временная метка обновляется, go в спящий режим. Если нет, аннотируйте объект и станьте лидером и непрерывно обслуживайте HTTP-запросы и периодически обновляйте объект.
Когда служба останавливается:
  • Изящное завершение работы, снятие любых блокировок на объекте.

как это сделать в python?

...