Sanic: Старт работы с асинхронным веб-фреймворком на базе uvloop для Python 3.5+

Автор: | 04.08.2026

uvloop в последнее время набирает популярность в мире Python как сверхбыстрая замена стандартному циклу событий asyncio. Sanic — это веб-фреймворк на базе uvloop, созданный для высокой производительности. Он похож на Flask своей простотой использования, но именно повышенная скорость выделяет его среди других. Он также назван в честь популярного интернет-мема Sanic — плохо нарисованной версии Соника Ежика.

Sanic предназначен для Python 3.5. Фреймворк позволяет использовать асинхронный код через синтаксис async/await для определения асинхронных функций. С его помощью вы можете писать асинхронные приложения на Python, подобно тому, как это делается в Node.js.

Пример «Hello World» с Sanic выглядит так:

Создайте новую директорию для этого проекта и вставьте этот код в новый файл под названием `app.py`.

Чтобы запустить этот код, вам также потребуется создать виртуальное окружение (убедитесь, что вы используете Python 3 при создании окружения) и выполнить следующую команду для установки Sanic:

«`bash

pip install sanic

«`

И запустите приложение:

«`bash

sanic app.run

«`

И посетите http://localhost:8000, чтобы увидеть «Hello World!» на странице.

«Hello World» — это хорошо, но давайте посмотрим, что еще мы можем сделать. В следующем примере мы немного изменим код, чтобы разобраться, как работать с аргументами запроса в данных запроса. Измените код в `app.py` на следующий:

«`python

from sanic import Sanic

from sanic.response import html

app = Sanic(__name__)

@app.get(«/»)

async def hello_world(request):

name = request.args.get(«name», «World»)

return html(f»

Hello {name}!

«)

if __name__ == «__main__»:

app.run(host=»0.0.0.0″, port=8000)

«`

Запустите код снова и на этот раз посетите http://localhost:8000/?name=Sam. Не стесняйтесь заменить «Sam» на свое имя. Когда вы посетите веб-страницу, она должна приветствовать вас по имени.

Далее мы можем использовать Sanic для выполнения чего-то полезного. Мы напишем код, который использует Twilio для ответа на текстовое сообщение. Для этого вам понадобится аккаунт Twilio, но не волнуйтесь, вы можете зарегистрироваться бесплатно.

Когда кто-то отправляет текстовое сообщение на ваш номер Twilio, Twilio делает HTTP-запрос к вашему приложению. Детали SMS передаются через параметры запроса. Twilio ожидает HTTP-ответ от вашего веб-приложения в виде TwiML, который представляет собой набор простых XML-тегов, используемых для того, чтобы сообщить Twilio, что делать дальше.

Снова замените код в `app.py` следующим кодом, чтобы быстро отвечать на текстовые сообщения:

«`python

from sanic import Sanic

from sanic.response import text

app = Sanic(__name__)

@app.post(«/sms»)

async def sms_reply(request):

from_number = request.form.get(«From»)

message_body = request.form.get(«Body»)

response_message = f»Thanks for your message {from_number}: {message_body}»

return text(f»{response_message}«,

content_type=»text/xml»)

if __name__ == «__main__»:

app.run(host=»0.0.0.0″, port=8000)

«`

Все, что вам нужно сделать, это получить номер Twilio или использовать номер телефона, который поставляется с вашей пробной учетной записью, и настроить его для отправки `POST`-запросов к вашему приложению при получении текстового сообщения.

Нашему приложению нужен общедоступный URL. Чтобы избежать необходимости развертывать каждый раз, когда мы вносим изменения, мы будем использовать полезный инструмент под названием ngrok, чтобы открыть туннель к нашей локальной машине.

Ngrok генерирует пользовательский URL переадресации, который мы будем использовать, чтобы сообщить Twilio, где найти наше приложение. Скачайте ngrok и запустите его в терминале на порту 8000:

«`bash

ngrok http 8000

«`

Затем нам нужно направить телефонный номер на наше приложение. Откройте экран конфигурации телефонного номера в консоли Twilio. Прокрутите вниз до поля «a message comes in» (когда приходит сообщение). Перед вводом URL вы увидите:

Введите URL для нашего маршрута сообщений, сгенерированный ngrok. Он должен выглядеть как `http://your-ngrok-url.ngrok.io/sms`.

Нажмите «Save» (Сохранить), убедитесь, что ваше приложение запущено, и отправьте текстовое сообщение на свой номер, чтобы получить ответ.

Это все, что вам нужно для начала создания приложений с использованием фреймворка Sanic для Python. Вы официально стали частью революции разработки, основанной на мемах.

Конечно, Sanic — это совершенно новый фреймворк, поэтому в ближайшем будущем ожидайте улучшений и изменений. Вы даже можете внести свой вклад в его репозиторий с открытым исходным кодом и помочь в его разработке самостоятельно.

Не стесняйтесь написать мне, если у вас есть какие-либо вопросы или вы просто хотите похвастаться тем, что вы построили:

— Email: sagnew@twilio.com

— Twitter: @Sagnewshreds

— Github: Sagnew

— Twitch (стриминг живого кода): Sagnewshreds