Update (on 2022-12-31)
As an update from @Marcelo Trylesinski, from uvicorn v 0.19.0
, the --debug
flag was removed (Ref #1640).
No, there is no difference.
The commadline run method (uvicorn app.main:app
) and executing the app.py using python command (python app.py
) are the same. Both methods are calling the uvicorn.main.run(...)
function under the hood.
In other words, the uvicorn
command is a shortcut to the uvicorn.run(...)
function.
So, in your case the function call
uvicorn.run("app.app:app",host="0.0.0.0", port=4557, reload=True, debug=True, workers=3)
can be done by uvicorn commandline as,
uvicorn app.app:app --host 0.0.0.0 --port 4557 --reload --debug --workers 3
Side Notes
The –debug option is hidden from the command line options help page, but it can be found in the source code. Thus, it feels running the app using uvicorn
command can be considered as a production thing.