You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写可指定共享目录的FastAPI极简静态文件服务器脚本?

解决FastAPI静态文件服务器404问题

你的代码出现404的核心原因是:uvicorn启动时会重新导入模块,导致挂载静态文件的逻辑未被执行。

原代码中,server对象在模块顶层定义,但挂载静态文件的操作放在了__main__代码块里。当用uvicorn.run(app="my_package:server")启动时,uvicorn会重新导入目标模块,此时__main__代码块不会触发,最终运行的server实例并没有挂载静态文件,自然无法找到请求的资源。

以下是修正后的极简静态文件服务器脚本:

import uvicorn
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
import sys

def create_app(directory: str) -> FastAPI:
    app = FastAPI()
    # 将静态文件挂载逻辑整合到应用创建流程中
    app.mount("/static", StaticFiles(directory=directory), name="static")
    return app

if __name__ == "__main__":
    # 增加参数合法性检查
    if len(sys.argv) < 2:
        print("使用方式: python your_script.py <要共享的目录路径>")
        sys.exit(1)
    target_dir = sys.argv[1]
    # 创建已完成静态文件挂载的应用实例
    app = create_app(target_dir)
    # 直接将app实例传给uvicorn,避免模块引用导致的逻辑丢失
    uvicorn.run(app)

使用说明

  • 运行脚本:python your_script.py /my/directory
  • 访问文件:http://localhost:8000/static/file.txt

内容的提问来源于stack exchange,提问作者W.P. McNeill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:20:32