В настоящее время мы работаем над асинхронным REST API с приоритетом производительности.uWSGI & gevent Постоянное подключение сетевого сокета
Первоначально мы хотели развернуть узел Node.js из-за его архитектуры, управляемой событиями, которая хорошо подходит для использования, но, к сожалению, JavaScript пока не поддерживает сокеты SCTP.
Это приводит нас к Python, и после некоторых соображений мы решили пойти с uWSGI & gevent.
Однако из-за характера архитектуры существуют две области со значительными накладными расходами.
Чтобы решить проблему кэширования данных в памяти, мы используем структуру кэширования uWSGI, которая должна хорошо работать.
Вторая проблема заключается в том, что приложение подключается к внутреннему обработчику через SCTP. При текущей настройке это соединение будет установлено и закрыто для каждого запроса. С тысячами запросов в секунду он оставляет большие накладные расходы.
В идеальном случае мы хотели бы установить соединение сокета навсегда и продолжать использовать его для каждого запроса. В PHP это возможно при наличии постоянных соединений сокетов. Предлагает ли Python/uWSGI аналогичную функцию? В качестве альтернативы мы могли бы использовать структуру обслуживания uWSGI и запросы процесса в связках.
Любые советы приветствуются.
Что значит «gevent» не управляется событиями? :) Не могли бы вы еще раз пояснить порядок сущностей в вашем дизайне? Что-то вроде Internet -> load balancer -> uWSIG/gevent/Python application -> ??? –
У меня были некоторые серьезные неправильные представления о gevent, основанные на полностью отсталых мелких деталях. Кажется, я все понял. Это действительно клиент -> балансировка нагрузки -> uwsgi/gevent. – awishformore