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

FastAPI启动事件代码报错:缺少event_type必填参数

解决FastAPI启动事件报错:TypeError: FastAPI.on_event() missing 1 required positional argument: 'event_type'

这个报错是因为你使用的FastAPI版本(0.100.0及以上)已弃用@app.on_event()装饰器的旧写法,改用了新的生命周期管理机制。以下是两种可行的解决方法:

方法一:使用官方推荐的lifespan上下文管理器(优先选择)

这种方式符合FastAPI新版本设计规范,可同时管理启动和关闭事件:

from fastapi import FastAPI

app = FastAPI()

items = {}

@app.get("/items/{item_id}")
async def read_items(item_id: str):
    return items[item_id]

async def lifespan(app: FastAPI):
    # 应用启动时执行的初始化逻辑
    items["foo"] = {"name": "Fighters"}
    items["bar"] = {"name": "Tenders"}
    yield
    # 应用关闭时执行的清理逻辑(可选)
    items.clear()

app.router.lifespan_context = lifespan

方法二:使用add_event_handler方法替代旧装饰器

如果想保留原有事件逻辑结构,可通过add_event_handler绑定启动事件:

from fastapi import FastAPI

app = FastAPI()

items = {}

async def startup_event():
    items["foo"] = {"name": "Fighters"}
    items["bar"] = {"name": "Tenders"}

# 绑定启动事件
app.add_event_handler("startup", startup_event)

@app.get("/items/{item_id}")
async def read_items(item_id: str):
    return items[item_id]

两种方法都能实现原代码中启动时初始化items字典的需求,推荐使用第一种lifespan方式,可读性和扩展性更强。

内容的提问来源于stack exchange,提问作者Ian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:36:29