Что касается Gunicorn, я знаю, что существуют различные классы рабочих, но для этого разговора я просто смотрю на типы синхронизации и асинхронности.
Из моего понимания...
sync
workers = (2 * cpu) + 1
worker_class = sync
async (gevent)
workers = 1
worker_class = gevent
worker_connections = a value (lets say 2000)
Таким образом (на основе четырехъядерной системы), использующих синхронизаторов, я могу параллельно обрабатывать не более 9 соединений. С Async я могу иметь до 2000, с оговорками, которые поставляются с асинхронным.
Вопросов
- Итак, куда впишется нить? Могу ли я добавлять потоки к типам рабочих процессов sync и async?
- Каков наилучший вариант вокруг рабочих-стрелков? Должен ли я захотеть разместить стрельбу перед API Django, с требованием параллельно обрабатывать 100 запросов?
- Безопасны ли классы gevent и sync worker?