FastAPI如何在非.py文件(如.csv)变更时自动重载应用?
解决方案
你执行的命令不生效是因为运行时shell会优先展开*.csv通配符,将其替换为当前目录下已存在的csv文件列表,uvicorn实际收到的不是通配符规则,只会监控命令运行那一刻已经存在的csv文件。
你可以用以下几种方式解决:
- 给通配符包裹引号,阻止shell提前解析通配符:
单引号、双引号都可以生效,此时uvicorn会直接拿到uvicorn main:app --reload --reload-include '*.csv'*.csv通配符规则,监控当前目录下所有后缀为.csv的文件,包括运行命令后新增的csv文件。 - 如果你使用配置文件管理uvicorn参数,以
pyproject.toml为例,可以直接添加固定配置:
配置完成后直接启动uvicorn即可,无需额外加启动参数。[tool.uvicorn.run] reload = true reload_include = ["*.csv"] - 如果需要监控多级子目录下的所有csv文件,可以将通配符改为
'**/*.csv':uvicorn main:app --reload --reload-include '**/*.csv'
配置完成后修改任意csv文件,看到终端输出重载日志即代表配置生效。
内容的提问来源于stack exchange,提问作者KoSpades
相关产品推荐
相关产品推荐

