Я пытаюсь оценить различные языки, чтобы построить небольшой сервер приложений с высокой пропускной способностью. Он должен делать небольшие вещи, такие как получение запроса, чтение данных с отдельного сервера, использующего приложение кеша (memcached, redis), и отправка обратно 5 - 10 строк XML или JSON. Очень высокая производительность ~ 1000 в секунду при производстве по крайней мере. У меня это на Nginx - PHP, а memcached занимает 5+ мс, чтобы отправить обратно все необходимые данные, так что есть некоторая сеть IO, которая блокирует.Python ThreadingMixin и BaseHTTPServer
Я изучал класс BaseHTTPServer Python. Я не гуру-питон, но мне нужно знать, как он работает за сценой. Если вы читаете эту страницу -
http://docs.python.org/library/socketserver.html
Он говорит: «Для создания асинхронных обработчиков, используйте классы ThreadingMixIn и ForkingMixIn.»
Действительно ли это асинхронный или он запускает One Thread Per Client. Если это один поток на клиентскую модель - это эти потоки уровня ОС? Если я придерживаюсь одного потока на клиентскую модель, будет достаточно четко очищать файлы Python, если я дам ему высокую оперативную память, 8-ядерный экземпляр amazon.
Отлично. Некоторые исследования. Какую технологию вы бы использовали, если бы вы были в такой ситуации? Мне нужно перенести этот Nginx PHP на что-то другое. Некоторое постоянное приложение, в котором встроен HTTP-сервер. –
Торнадо в автономном приложении Py или с Nginx? Этот тест показывает, что Nginx + Tornado достигла 8000+ в секунду. http://en.wikipedia.org/wiki/Tornado_%28web_server%29 –
@Don Question: ThreadingMixin использует threading.thread, который является AFAIK потоком уровня os, и в этом случае он не имеет отношения к GIL. Это сделало бы threadingmixin идеальным выбором для OP. –