from multiprocessing import Process
a=Process(target=worker, args=())
a.start()
Я делаю приложение с несколькими рабочими процессами (пока не смейтесь), в котором каждый работник может грациозно перезагрузиться.Всякий раз, когда код обновляется, новые запросы обслуживаются новыми рабочими процессами с новым кодом.Это так, что
- Недавно запущенный поток содержит обновленный код
- , гарантирующий, что никакие запросы не отброшены
Я уже сделал работника, который слушает:
- обслуживает запросы, когда получает сигнал запроса
- убивает себя, когда сигнал next является управляющим сигналом
Я сделал этов Zeromq.Клиенты подключаются к этому серверу, используя zeromq.Клиенты не не взаимодействуют по HTTP.
Какой хороший способ перезагрузить код?Можете ли вы объяснить схему, которая является простой и достаточно глупой, чтобы быть надежной?
Что я имею в виду / могу сделать
Запустить поток внутри основного процесса, который повторяется:
- Сигнализировать о смерти всех рабочих процессов
- Запускать новые рабочие процессы
Но этот подход пропадет (я настроил его таким образом)запросы между смертью последнего старого работника и порождением первого нового работника.
И нет, я не студент колледжа.«Домашнее задание» означает любопытство.