Какой асинхронный фреймворк под python самый быстрый?
Стоит задача получать из RabbitMQ задачи и делать HTTP-запросы с учетом RateLimit, авторизацией и прочей бизнес-логикой. Наличие сетевого взаимодействия явно ведет к использованию асихронных фреймворков, вроде gevent, tornado, twisted, asyncio.
Вопрос к работавшим с этими фреймворками: на одинаковых низкоуровневых задачах, кто из них быстрее?
Сергей Тихонов
@tumbler Автор вопроса, куратор тега Python
Pavel Denisov, если вы имеете ввиду, что я упрусь по скорости в реализацию бизнес-логики - то да, скорее всего так и будет. Однако можно привести простой пример:
Пусть на фреймворке X реализация функционала занимает 50% времени CPU, а на фреймворке Y - 90%. При ускорении бизнес-логики в 2 раза, во сколько раз увеличится производительность сервиса целиком?
Для фреймворка X это будет (50 + 50)/(50 + 50/2) = +33% , для фреймворка Y - (10 + 90) / (10 + 90/2) = +82%.
Поэтому вопрос о наиболее эффективном фреймворке всё еще актуален.
Сергей Тихонов
@tumbler Автор вопроса, куратор тега Python
Спасибо за ответ, asyncio + aiohttp люблю и уважаю, но все-таки не уверен, что это самый быстрый вариант. uvloop по опыту в продакшне добавляет +15% к RPS веб-сервера, это конечно круто.
Однако, "счетчик просмотров" на основе redis + incr работает в 10 раз быстрее на связке uwsgi + python-redis, нежели чем gunicorn + aiohttp + aioredis.
то таки не морочьте себе голову, а сделайте все на celery. тем более что брокер у вас есть.
а еще я думаю скорость тут врядли нужна, а больше будет делаться упор на качество, потому процессы длинные будут и следовательно Вам может понадобиться selenium
вобщем думаю что постановка вопроса несколько не полная и отсюда Вы будете иметь не правильные советы