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