在云开发机上运行uvicorn的问题

今天在使用uvicorn运行fastapi的app时,遇到了几个问题:

无法在code server上正常访问

由于我的开发环境在云上,用的code server,并非是本地,因此默认命令uvicorn main:app --reload 是无法正常访问的,因为code server代理的网址是https://example.com/proxy/8000

因此需要更改root-path才可以正常访问:

uvicorn main:app --root-path https://example.com/proxy/8000 --reload

对于python的自定义包无法正常载入解析

在我的main.py中,导入自定义包:from myapp.utils.database import Database 但在myapp文件夹下执行uvicorn main:app时,会出现无法找到myapp模块的错误,因此需要返回上一级文件夹,然后执行uvicorn myapp.main:app,这样就可以了

reload监控文件夹设置

由于uvicorn在启用reload时,默认是监控当前文件夹的变动,但如果使用了uvicorn myapp.main:app,则需要指定监控的文件:

uvicorn myapp.main:app --reload --reload-dir /path/to/myapp/

综上,全部命令为:

uvicorn myapp.main:app --reload --root-path https://example.com/proxy/8000 --reload-dir /path/to/myapp/