Отличия в способе запуска

Есть ли отличия в способе запуска:

uvicorn main:app

или

python main.py

При условии, что в main.py указано:

if __name__ == "__main__":
    uvicorn.run(app.app, host='0.0.0.0', port='8080')

Следует уточнить, что я запускаю приложение на fastAPI


Ответы (1 шт):

Автор решения: mrEvgenX

Можно обратиться к исходному коду uvicorn. Консольная команда uvicorn берется из настроек в setup.py, секции entry_points

Смотрим: https://github.com/encode/uvicorn/blob/master/setup.py#L84

uvicorn=uvicorn.main:main - это значит, что запускается функция main из модуля uvicorn.main.

Давайте посмотрим, что это за функция?

https://github.com/encode/uvicorn/blob/master/uvicorn/main.py#L272

Она правит sys.path и с невероятной кучей аргументов, которые передаются через опции командной строки, запускает функцию run. Отсюда можно решить, если ничего не перепутал, что разницы никакой.

→ Ссылка