Пусть ваше Python (веб-приложение) летает, семейная корзина (асинхронная/сопрограмма)

Python

Введение

В последние годы популярность языка Python резко возросла. Он широко используется в операциях по развитию сети, науке о данных, развитии сети и вопросах сетевой безопасности.

Однако у Python нет абсолютно никакого преимущества в скорости.

Как Java сравнивается с C, C++, C# или Python с точки зрения скорости? Ответ почти полностью зависит от запускаемого приложения. Для этого нет идеального критерия, однако игра Computer Language Benchmarks Game — хороший способ.

Я хочу ответить на вопрос: почему Python от 2 до 10 раз медленнее других языков при запуске одной и той же программы? Почему мы не можем сделать это быстрее?

Вот главные причины:

  • «Это GIL (глобальная блокировка интерпретатора)»
  • «Это интерпретируемый язык, а не компилируемый язык»
  • "Это язык с динамической типизацией"

Сегодня мы не будем беспокоиться о том, какая из вышеперечисленных причин оказывает наибольшее влияние на производительность, а поговорим о том, как мы можем сделать ее быстрее, чем ожидалось, и намного быстрее в Python 3.7.

2. Начните исследовать

Python представил синтаксические сахара async и await для сопрограмм в версии 3.5, что означает, что мы можем использовать сопрограммы для написания приложений Python, которые сделают наш код Python похожим на Node и заставят его выполняться асинхронно.

Конечно, это не наша цель сегодня

3. Введите тему

Среди множества веб-фреймворков Django, Tornado и колбы относительно зрелые, а такие структуры, как торнадо, могут также выбрать асинхронные методы, но мы не будем говорить о них сегодня.

То, о чем мы говорим, сильнееSanic

Чего говорить про Саника,думаю главная причина в том что он достаточно шустрый и его можно быстро построить.Пишет как Фляск,а говорит бездоказательно.Посмотрите на картинку.

Вот официальные результаты тестов

Разработчики Sanic говорят, что их вдохновила эта статьяuvloop: Blazing fast Python networking

Вот что я чувствую после двух лет использования

  • Быстро (круто) взлететь

  • Стройте быстро

  • Встроенная поддержка синтаксиса async/await

  • Сообщество медленно активизируется, и некоторые отличные плагины постепенно появляются по сравнению с предыдущей незрелостью.

  • Автоматически назначать процессы и управлять ими

Просто краткое описание моих ощущений.Цель сегодняшнего дня не в том, чтобы научить вас, как использовать Sanic, а в том, чтобы надеяться, что больше людей присоединятся к Sanic и ощутят удобство, которое принесло появление Sanic и других превосходных фреймворков.

прикреплятьОфициальная документация Sanic

3. Расширенный

Сказав так много, есть еще одна проблема. Мой веб использует сопрограммы, а это означает, что когда я работаю с базой данных, используя обычные pymysql и psycopg2, мы блокируем наши потоки. Независимо от того, насколько быстр наш веб-сервис, он застрянет в базе данных. Напрасно, тогда я приведу вам некоторые из моих часто используемых библиотек поддержки сопрограмм

  • PostgreSQL: асинхронный
  • Редис: Айоредис
  • Платформа ввода/вывода: uvloop

Это некоторые из библиотек, которые я использую чаще.Лично мне нравится pg.Что касается других баз данных, таких как mysql, вы можете поискать самостоятельно.

С момента появления Sanic я использовал его для создания больших и малых веб-приложений, включая его все более полное сообщество и поддержку во всех аспектах, таких как появление таких библиотек, как sanic_session, чтобы он больше не казался таким трудоемким, так что он больше не сталкивается с тем, что ничего не может сделать для больших производственных сред, до сих пор я стремился изучить его небольшой плагин, если у вас есть лучшая поддержка Sanic, пожалуйста, оставьте сообщение

В-четвертых, подтереть жопу

Я найду время, чтобы обновить учебники Sanic и семейное ведро ниже.Если вам лень, лень и лень читать официальные документы, просто подождите, пока я (старший брат) обновлю его!