Зачем запускать приложение Quart с Hypercorn / разве оно не автоматическое?

Если вы изучите библиотеку Quart,app.run() просто устанавливает некоторую конфигурацию, а затем использует asyncio.run(serve(self, config)), откуда приходит подача from hypercorn.asyncio import serve.

Так что даже если вы запустите приложение Quart черезpython myapp.py, разве он уже не использует сервер Hypercorn?

В частности, в чем разница между этим и запуском через hypercorn myapp:app?

https://pgjones.gitlab.io/quart/deployment.html

Не рекомендуется запускать Quart напрямую (через run()) в производственной среде. Вместо этого рекомендуется запускать Quart с использованием Hypercorn или альтернативного сервера ASGI. Hypercorn устанавливается вместе с Quart и по умолчанию используется для обслуживания запросов (например, с помощью run()).

Похоже, что даже несмотря на то, что Hypercorn используется для обслуживания запросов по умолчанию сrun(), не рекомендуется использовать run()? Кто-нибудь еще запутался?

1 ответ

Решение

Итак, даже если вы запустите приложение Quart через python myapp.py, разве оно уже не использует сервер Hypercorn?

Ага.

В частности, в чем разница между этим и запуском через Hypercorn myapp: app?

Я хочу зарезервировать runметод разработки, чтобы он по умолчанию мог принимать решения, полезные для разработки, но плохие для производства. Примером на данный момент является то, чтоrunметод использует перезагрузчик (перезагружает приложение при изменении кода) по умолчанию, что отлично при разработке, но проблема производительности в производстве. Другой пример:run метод не будет использовать несколько рабочих, что снова приведет к ухудшению производительности в производстве.

(Я автор Quart)

Другие вопросы по тегам