首页 > 其他分享 >fastapi-events fastapi 异步事件分发处理扩展

fastapi-events fastapi 异步事件分发处理扩展

时间:2024-09-17 08:51:28浏览次数:10  
标签:异步 fastapi events handler import local event

fastapi-events fastapi 异步事件分发处理扩展,提供了本地,以及远程消息处理能力,同时包含了一些内置的handler,对于自定义handler 也是比较灵活的

参考使用

  • app.py
from fastapi import FastAPI
from fastapi.requests import Request
from fastapi.responses import JSONResponse
 
from fastapi_events.dispatcher import dispatch
from fastapi_events.middleware import EventHandlerASGIMiddleware
from fastapi_events.handlers.local import local_handler
app = FastAPI()
app.add_middleware(EventHandlerASGIMiddleware, 
                   handlers=[local_handler])   # registering handler(s)
@app.get("/")
def index(request: Request) -> JSONResponse:
    dispatch("my-fancy-event", payload={"id": 1})  # Emit events anywhere in your code
    return JSONResponse()    
  • 自定义handler 处理
from fastapi_events.handlers.local import local_handler
from fastapi_events.typing import Event
   
@local_handler.register(event_name="cat*")
def handle_all_cat_events(event: Event):
    """
    this handler will match with an events prefixed with `cat`.
    ex: "cat_eats_a_fish", "cat_is_cute", etc
    """
    # the `event` argument is nothing more than a tuple of event name and payload
    event_name, payload = event
 
    # TODO do anything you'd like with the event
   
@local_handler.register(event_name="cat*")  # Tip: You can register several handlers with the same event name
def handle_all_cat_events_another_way(event: Event):
    pass
   
@local_handler.register(event_name="*")
async def handle_all_events(event: Event):
    # event handlers can be coroutine function too (`async def`)
    pass

说明

在项目中使用此模块可以实现异步的消息处理,实现灵活的业务处理

参考资料

https://github.com/melvinkcx/fastapi-events

标签:异步,fastapi,events,handler,import,local,event
From: https://www.cnblogs.com/rongfengliang/p/18350423

相关文章

  • Go runtime 调度器精讲(十):异步抢占
    原创文章,欢迎转载,转载请注明出处,谢谢。0.前言前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占。本讲会介绍基于信号的真抢占式调度。在介绍真抢占式调度之前看下Go的两种抢占式调度器:抢占式调度器-Go1.2至今基于协作的抢占式调度器-Go1.2-Go......
  • C# 异步编程场景
    前言异步编程允许程序在等待某些操作(如文件读写、网络请求等)完成时,不必阻塞主线程,从而可以继续执行其他任务。这种非阻塞的特性对于提高应用程序的并发性和响应速度至关重要。C#通过async和await关键字,以及Task类,为异步编程提供了简洁而强大的支持。本文将深入探讨C#......
  • TAG:BladeLLM 的纯异步推理架构
    作者:张子鹏PAI引擎团队随着GQA/MLA/MoE等模型结构不断发展,大语言模型的推理逐步解除了显存限制,逐渐向着高并发、高吞吐的方向发展。推理引擎的运行时开销也变得不可忽视。主流LLM推理框架的运行时开销大致来自:Python性能:考虑用户易用性和开发效率,业界主流框架都采用Python......
  • WebSocket vs. Server-Sent Events:选择最适合你的实时数据流技术
    引言:在当今这个信息爆炸的时代,用户对于网页应用的实时性要求越来越高。从即时通讯到在线游戏,再到实时数据监控,WebSocket技术因其能够实现浏览器与服务器之间的全双工通信而受到开发者的青睐。WebSocket技术为现代Web应用提供了强大的实时通信能力。虽然它在实现上可能比传统的HTTP......
  • 【USB3.0协议学习】Topic3·三种Reset Events分析
    USB3.0中的三种ResetEvents1.PowerOnResetPowerOnReset被用来代指上电复位,当一个device接入到roothub或者外置hub的时候,该device检测到Vbus信号从无效变为有效,会自动执行复位。(注意,selfpowereddevice不通过Vbus供电,但是Vbus发生转变的时候它同样会执行复位)1.1软件设置P......
  • SpringBoot异步接口实现:提高系统的吞吐量
    Servlet3.0之前:每一次Http请求都由一个线程从头到尾处理。Servlet3.0之后,提供了异步处理请求:可以先释放容器分配给请求的线程与相关资源,减轻系统负担,从而增加服务的吞吐量。在springboot应用中,可以有4种方式实现异步接口(至于ResponseBodyEmitter、SseEmitter、StreamingResponseB......
  • FastAPI 应用安全加固:HTTPSRedirectMiddleware 中间件全解析
    在当今的网络环境中,数据安全变得越来越重要。HTTPS作为一种安全协议,它通过加密传输数据来保护用户信息免受窃取和篡改。在FastAPI应用中,确保所有的HTTP请求都通过HTTPS进行是至关重要的。中间件在FastAPI中用于处理请求前后的通用任务,例如身份验证、日志记录、请......
  • 从单体到微服务:FastAPI ‘挂载’子应用程序的转变
    在现代Web应用开发中,模块化架构是一种常见的设计模式,它有助于将大型应用程序分解为更小、更易于管理的部分。FastAPI,作为一个高性能的PythonWeb框架,提供了强大的支持来实现这种模块化设计。通过“挂载”子应用程序,我们可以为不同的功能区域(如前端接口、管理员接口和用......
  • 深入理解FastAPI中的root_path:提升API部署灵活性的关键配置
    在Web开发领域,FastAPI因其高性能、易于使用和类型提示功能而备受开发者喜爱。然而,当涉及到在生产环境中部署FastAPI应用程序时,我们常常需要面对一些挑战,比如如何正确处理代理服务器添加的路径前缀。这时,root_path配置就变得至关重要。本文将深入探讨FastAPI中的root_path,并......
  • JavaScript 中的异步任务、同步任务、宏任务与微任务
    JavaScript中的异步任务、同步任务、宏任务与微任务在JavaScript的世界里,理解异步任务、同步任务、宏任务和微任务是非常重要的,它们共同构成了JavaScript独特的执行机制。一、同步任务与异步任务1.同步任务定义:同步任务是在代码执行过程中,按照顺序依次执行的任务......