[Разработка веб-сайтов, Python, Flask] Оно живое! Вышла версия Flask 2.0
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Незаметно от всех 12 мая 2021 вышла новая версия известного микрофреймворка Flask. Хотя казалось, что во Flask есть уже все, ну или почти все, что нужно для микрофреймворка.
Предвкушая интерес, а что же нового завезли, оставлю ссылку на Change log.Из приглянувшихся особенностей новой версии:
- Прекращена поддержка Python версии 2. Минимальная версия Python 3.6
- Поддержка асинхронных view и других обратных вызовов, таких как обработчики ошибок, определенные с помощью async def. Обычные синхронные view продолжают работать без изменений. Функции ASGI, такие как веб-сокеты, не поддерживаются.
- Добавьте декораторы роутов для общих методов HTTP API.
@app.post ("/ login") == @ app.route ("/ login", methods = ["POST"])
- Новая функция Config.from_file для загрузки конфигурации из файла любого формата.
- Команда flask shell включает завершение табуляции, как это делает обычная оболочка python.
- При обслуживании статических файлов браузеры будут кэшировать на основе содержимого, а не на основе 12-часового таймера. Это означает, что изменения статического содержимого, такого как стили CSS, будут немедленно отражены при перезагрузке без необходимости очистки кеша.
Рассмотрим асинхронностьВсе бы было хорошо, но в самом начале после установки был не найден модуль asgiref. Доустановим руками.Для примера напишем самое простое приложение: Ping/Pong. Оно не имеет особого смысла и сложной логики, только имитирует некоторую проверку "жив ли сервис". Также это приложение станет бенчмарком.
from flask import Flask
app = Flask(__name__)
@app.get('/')
async def ping():
return {'message': 'pong'}
if __name__ == '__main__':
app.run(host='0.0.0.0')
ДеплойКак было сказано в Change log: "Функции ASGI, такие как веб-сокеты, не поддерживаются."
То есть только единственный способ задеплоить приложение используя gunicorn.Команда: gunicorn -w 8 --bind 0.0.0.0:5000 app:app
-w 8 - 8 запущенных процессов
--bind 0.0.0.0:5000 - адрес приложенияСверим производительностьКоманда для нагрузочного тестирования: wrk -t 8 -c 100 -d 5 http://localhost:5000
Асинхронное приложение Flask 2.0:
Running 5s test @ http://localhost:5000
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 17.80ms 2.37ms 36.95ms 91.92%
Req/Sec 673.44 163.80 3.86k 99.75%
26891 requests in 5.10s, 4.21MB read
Requests/sec: 5273.84
Transfer/sec: 844.69KB
Синхронное приложение Flask 2.0:
Running 5s test @ http://localhost:5000
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.91ms 842.62us 21.56ms 89.86%
Req/Sec 2.38k 410.20 7.64k 93.53%
95301 requests in 5.10s, 14.91MB read
Requests/sec: 18689.25
Transfer/sec: 2.92MB
Синхронное приложение Flask 1.1.2:
Running 5s test @ http://localhost:5000
8 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.98ms 823.42us 17.40ms 88.55%
Req/Sec 2.37k 505.28 12.23k 98.50%
94522 requests in 5.10s, 14.78MB read
Requests/sec: 18537.84
Transfer/sec: 2.90MBВ качестве выводаИсходя из результатов бенчмарков можно увидеть, что 1 и 2 версия в синхронном режиме выдают одинаковые результаты(с небольшой погрешностью). Что касается асинхронности в Flask 2.0 можно сделать вывод, что пока она слишком сырая даже в dev режиме запуска асинхронный view отстает от синхронного. Но также не стоит забывать о том что ASGI пока не поддерживается, и нет возможности запустить через uvicorn. Остается только ждать обновления и следить за дальнейшим развитием.Обновилась именно major версия, а это значит у нас есть надежда новую переосмысленную итерацию фреймворка. Разработчиков стоит похвалить как минимум за то, что проект не заброшен и старается успевать за основными тенденциями в других фреймворках. Лично мне очень нравится Flask, он совершенно не перегружен, как например Django.Если у вас есть идеи, почему получились именно такие результаты - пожалуйста поделитесь ими в комментариях.
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, Data Engineering] Как построить систему распознавания лиц с помощью Elasticsearch и Python (перевод)
- Гвидо ван Россум намерен достигнуть двукратного увеличения производительности в CPython 3.11
- [Python, SQL, Data Mining, R, Data Engineering] Звездные войны или подробный гайд по dplyr
- [Тестирование IT-систем, Python, Программирование, Машинное обучение] PyTest для машинного обучения — простой учебник на основе примеров (перевод)
- [Высокая производительность, Разработка веб-сайтов, Разработка мобильных приложений] Вам не нужны ни PWA, ни AMP, чтобы ваш сайт загружался быстро (перевод)
- [Веб-дизайн, Разработка веб-сайтов, HTML, Учебный процесс в IT] Базовая структура HTML-документа с объяснением каждой строчки (перевод)
- [Python, Программирование, Умный дом, Интернет вещей] Простой Telegram-бот для получения информации через MQTT
- [Программирование, .NET, Visual Studio, Отладка] Почему в Visual Studio стек вызовов асинхронного кода иногда перевёрнут? (перевод)
- [Python, Программирование, Микросервисы] Как превратить скрипт на Python в «настоящую» программу при помощи Docker (перевод)
- [Разработка веб-сайтов, HTML] HTML-теги и атрибуты, о которых вы, возможно, не знали
Теги для поиска: #_razrabotka_vebsajtov (Разработка веб-сайтов), #_python, #_flask, #_flask, #_async, #_new_release, #_python, #_python3, #_razrabotka_vebsajtov (
Разработка веб-сайтов
), #_python, #_flask
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Незаметно от всех 12 мая 2021 вышла новая версия известного микрофреймворка Flask. Хотя казалось, что во Flask есть уже все, ну или почти все, что нужно для микрофреймворка. Предвкушая интерес, а что же нового завезли, оставлю ссылку на Change log.Из приглянувшихся особенностей новой версии:
from flask import Flask
app = Flask(__name__) @app.get('/') async def ping(): return {'message': 'pong'} if __name__ == '__main__': app.run(host='0.0.0.0') То есть только единственный способ задеплоить приложение используя gunicorn.Команда: gunicorn -w 8 --bind 0.0.0.0:5000 app:app -w 8 - 8 запущенных процессов --bind 0.0.0.0:5000 - адрес приложенияСверим производительностьКоманда для нагрузочного тестирования: wrk -t 8 -c 100 -d 5 http://localhost:5000 Асинхронное приложение Flask 2.0: Running 5s test @ http://localhost:5000 8 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 17.80ms 2.37ms 36.95ms 91.92% Req/Sec 673.44 163.80 3.86k 99.75% 26891 requests in 5.10s, 4.21MB read Requests/sec: 5273.84 Transfer/sec: 844.69KB Синхронное приложение Flask 2.0: Running 5s test @ http://localhost:5000 8 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.91ms 842.62us 21.56ms 89.86% Req/Sec 2.38k 410.20 7.64k 93.53% 95301 requests in 5.10s, 14.91MB read Requests/sec: 18689.25 Transfer/sec: 2.92MB Синхронное приложение Flask 1.1.2: Running 5s test @ http://localhost:5000 8 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.98ms 823.42us 17.40ms 88.55% Req/Sec 2.37k 505.28 12.23k 98.50% 94522 requests in 5.10s, 14.78MB read Requests/sec: 18537.84 Transfer/sec: 2.90MBВ качестве выводаИсходя из результатов бенчмарков можно увидеть, что 1 и 2 версия в синхронном режиме выдают одинаковые результаты(с небольшой погрешностью). Что касается асинхронности в Flask 2.0 можно сделать вывод, что пока она слишком сырая даже в dev режиме запуска асинхронный view отстает от синхронного. Но также не стоит забывать о том что ASGI пока не поддерживается, и нет возможности запустить через uvicorn. Остается только ждать обновления и следить за дальнейшим развитием.Обновилась именно major версия, а это значит у нас есть надежда новую переосмысленную итерацию фреймворка. Разработчиков стоит похвалить как минимум за то, что проект не заброшен и старается успевать за основными тенденциями в других фреймворках. Лично мне очень нравится Flask, он совершенно не перегружен, как например Django.Если у вас есть идеи, почему получились именно такие результаты - пожалуйста поделитесь ими в комментариях. =========== Источник: habr.com =========== Похожие новости:
Разработка веб-сайтов ), #_python, #_flask |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:22
Часовой пояс: UTC + 5