Причины использования Python Sanic или Async для Asgiref? - PullRequest
0 голосов
/ 03 мая 2018

Я понимаю, что ответ «всегда зависит», но, вообще говоря, будет ли причина использовать оболочку asgiref в таких средах Async, как Sanic.

https://github.com/django/asgiref https://github.com/channelcat/sanic

Мой главный вопрос: зачем кому-то использовать это в рамках асинхронной среды, я понимаю вариант использования Django, но если вы разрабатываете асинхронное программирование, что-то вроде этого кажется немного ленивым способом обработки проблема.

Скажи мне, что я не прав.

Ответы [ 2 ]

0 голосов
/ 15 августа 2018

Во-первых, фон:

Некоторые из асинхронных сред, такие как sanic и aiohttp, предшествуют точке, в которой сформировался ASGI, и потому подходят для использования в качестве интерфейса сервера / приложения asyncio.

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

Итак, почему может стоить усилий?

Что ж, выгода, которую они получили бы, если бы они сделали сделали бы так:

  • Уметь работать под кучей разных реализаций сервера. (Либо их собственные реализации, либо любой из серверов uvicorn, hypercorn, daphne.) Возможность прозрачного переключения между реализациями серверов дает более устойчивую экосистему и означает, что реализации серверов могут совместно использоваться в рамках. Sanic получит реализацию сервера с поддержкой HTTP / 2, поддержкой Windows и PyPy, которая решит некоторые нерешенные проблемы, связанные с управлением потоком сокетов.
  • Получите выгоду от общего промежуточного программного обеспечения и других инструментов. Возможность написания промежуточного программного обеспечения, которое работает в любой среде ASGI, помогает экосистеме в целом. Вы можете написать промежуточное программное обеспечение для отладки, статическое обслуживание файлов, тестовые клиенты и т. Д., Которые работают с любой инфраструктурой ASGI, вместо того, чтобы создавать новые вещи для каждой платформы.
  • Меньшая сложность. Наличие тщательно разработанного и независимого интерфейса сервера / приложения помогает уменьшить площадь поверхности, которую разработчики должны учитывать при просмотре внутренних компонентов инфраструктуры приложения, поскольку это означает, что вы получили действительно хорошо документированную границу между кодом сервера и кодом приложения.
  • наборный. Поскольку ASGI является составным интерфейсом, вы можете комбинировать его полезными способами. Например, обслуживайте два разных приложения Sanic с одного веб-сервера.

Короче говоря, ASGI выгоден по той же причине, что и WSGI. Это менее выигрыш для sanic, чем для любого, кто сейчас пишет новую фреймворк Asyncio, поскольку они уже проделали всю тяжелую работу по написанию серверной реализации, но от этого все еще есть преимущества, и это было бы абсолютно победой для сообщества в целом.

Похожие: Билет ASGI на Sanic .

(Также обратите внимание, что asgiref - это всего лишь пакет Python с несколькими помощниками для работы со средами ASGI, который также является репозиторием, в котором хранятся документы спецификации ASGI. Вопрос в том, чтобы использовать ASGI для Sanic, а не используя asgiref.)

0 голосов
/ 04 мая 2018

Я не знаком с asgiref в частности. Тем не менее, с учетом сказанного, я знаком с идеей asgi как бы заменить wsgi.

С точки зрения Sanic, это не имеет значения. Sanic имеет свой собственный сервер, встроенный в , и он работает асинхронно из коробки.

Я не хочу говорить вам, что вы сами по себе неправы, но я не вижу в этом смысла в саническом мире.

...