独角兽(uvicorn)。 运行 以编程方式还是通过命令行?
gunicorn (uvicorn). run programatically or via command line?
如果我在生产环境中以编程方式或通过命令行 运行 uvicorn (gunicorn) 有什么不同吗?
命令行:
uvicorn --host ${HOST} --port ${PORT} --workers ${NUM_OF_WORKERS} --log-config ${FILE_PATH}
以编程方式
uvicorn.run(
'main:app', host=host, port=port, reload=False,
workers=workers_num, log_config=log_config
)
python main.py
我会根据@Klaus D.
的提示尝试自己回答
uvicorn
可执行文件为:
#!/usr/local/bin/python3.8
# -*- coding: utf-8 -*-
import re
import sys
from uvicorn.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
其中 main()
是:
def main(
...
many_arguments_here
...
) -> None:
sys.path.insert(0, app_dir)
run(app, **kwargs)
所以,如果我们 运行 uvicorn
以编程方式喜欢
if __name__ == '__main__':
import sys
# app_dir default value if nothing set
app_dir = "."
sys.path.insert(0, app_dir)
sys.exit(
uvicorn.run(
'main:app', host=host, port=port, reload=False,
workers=workers_num, log_config=log_config
)
)
这与通过命令行 运行 uvicorn
相同
如果我在生产环境中以编程方式或通过命令行 运行 uvicorn (gunicorn) 有什么不同吗?
命令行:
uvicorn --host ${HOST} --port ${PORT} --workers ${NUM_OF_WORKERS} --log-config ${FILE_PATH}
以编程方式
uvicorn.run(
'main:app', host=host, port=port, reload=False,
workers=workers_num, log_config=log_config
)
python main.py
我会根据@Klaus D.
的提示尝试自己回答uvicorn
可执行文件为:
#!/usr/local/bin/python3.8
# -*- coding: utf-8 -*-
import re
import sys
from uvicorn.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
其中 main()
是:
def main(
...
many_arguments_here
...
) -> None:
sys.path.insert(0, app_dir)
run(app, **kwargs)
所以,如果我们 运行 uvicorn
以编程方式喜欢
if __name__ == '__main__':
import sys
# app_dir default value if nothing set
app_dir = "."
sys.path.insert(0, app_dir)
sys.exit(
uvicorn.run(
'main:app', host=host, port=port, reload=False,
workers=workers_num, log_config=log_config
)
)
这与通过命令行 运行 uvicorn
相同