@nirvimel

Эталонный пример gevent TCP-сервера с форком процесса и демонизацией. Где его можно увидеть?

Возьмем классический сценарий: сервер демонизируется, создает сокет, начинает его слушать, форкается для порождения воркеров, мастер процесс закрывает свою копию сокета, общается по средством сигналов с дочерними процессами, воркеры обслуживают свои копии сокета и ждут команд (сигналов) от мастера.
Я не нашел на эту тему официального примера от gevent. У gevent вообще много проблем с документацией. На Гитхабе есть проекты, в разной степени реализующие данный сценарий, но соответствующий код сильно отличается и у них куча issues касательно именно применения gevent в данном сценарии.
  1. tproxy - целостный проект, по-своему реализующий данный сценарий, достаточно объемный, пока разбираюсь в нем.
  2. geventdaemon - отдельная библиотека для демонизации gevent, наследуется от DaemonContext (почему остальные не идут по этому пути?), непрозрачно как-то.
  3. Пример иллюстрирует форк и gevent.server.StreamServer (вместо прямых операций с сокетом), почему именно такая реализация? можно ли доверять автору? если этот простой вариант не имеет подводных камней, то почему остальные не используют StreamServer?
  4. Еще одна полностью оригинальная реализация.
  5. И еще один полностью оригинальный пример.

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

Так как же правильно демонизировать и форкать сервер и взаимодействовать мастер-процессу с воркерами?
  • Вопрос задан
  • 429 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы