【发布时间】:2020-05-12 15:20:48
【问题描述】:
我正在研究最适合我的 Web 框架。
我们将开发几个微服务,并且我们需要在一些微服务上调度事件,这些事件可以在其他微服务上被监听。
是否有任何使用 FastAPI 的支持?
如果没有,有没有办法监听数据库事件操作?
我看到了来自starlette 的@app.on_event("shutdown|startup"),但我可以发送更多事件吗?
提前谢谢你。
【问题讨论】:
标签: fastapi
我正在研究最适合我的 Web 框架。
我们将开发几个微服务,并且我们需要在一些微服务上调度事件,这些事件可以在其他微服务上被监听。
是否有任何使用 FastAPI 的支持?
如果没有,有没有办法监听数据库事件操作?
我看到了来自starlette 的@app.on_event("shutdown|startup"),但我可以发送更多事件吗?
提前谢谢你。
【问题讨论】:
标签: fastapi
目前 FastAPI 中没有通用的事件调度/侦听功能。
@app.on_event("shutdown|startup")
是关于 ASGI 协议的一个小节。由 Starlette 实现并在 FastAPI 中可用
https://asgi.readthedocs.io/en/latest/specs/lifespan.html
FastApi/Starlette 仅是 Web 框架,仅限于 http 和 websocket 事件,它们不为任何特定的数据库事件提供预构建的事件处理程序。
【讨论】:
虽然 FastAPI 不支持常规事件分派,但有一些库可以对此进行补充。我一直在使用的是fastapi-events(免责声明:我是维护者)
事件可以通过dispatch("event name", {"payload": "here"})进行调度
事件的处理可以在代码中完成,也可以转发到远程队列。
【讨论】: