Сценарий
У меня есть серверный процесс, реализованный на Python и gevent, который подключается к серверной службе через TCP / IP и обслуживает множество веб-клиентов (~ 1000 на процесс) с быстро меняющимся динамическим содержимым на основе изменений, внесенных серверной службой , Служба работает в Ubuntu 10.04 и не будет работать в Windows, поэтому целевая платформа исправлена. В настоящее время мы используем Python 2.6.6.
Задача
Обслуживание изменений для многих клиентов может привести к задержке в обработке изменений, отправленных бэкэндом, поэтому я планирую разделить сервер на несколько процессов. Ряд рабочих процессов будет обслуживать веб-клиентов, в то время как основной процесс все еще будет подключен к бэкэнд-службе. Я уже использую отдельный пул гринлетов для обслуживания веб-клиентов, но их необходимо включить в рабочие процессы.
Вопрос
Не могли бы вы указать мне на реализацию пула рабочих процессов для gevent или выяснить, как я могу использовать собственный многопроцессорный модуль Python с gevent правильным способом?
Ограничения
Я бы не хотел вводить потоки Python в наши процессы, поскольку это дало бы место для конкуренции GIL, что снизило бы производительность за счет задержки. Так что, если возможно, это будет чистое многопроцессорное решение + Gevent.