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

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

时间:2024-09-23 10:50:59浏览次数:7  
标签:异步 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
from fastapi.requests import Request

说明

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

参考资料

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

标签:异步,fastapi,events,handler,import,local,event
From: https://blog.51cto.com/rongfengliang/12087656

相关文章

  • 异步处理方案
    前言良好的系统设计必须要做到开闭原则,随着业务的不断迭代更新,核心代码也会被不断改动,出错的概率也会大大增加。但是大部分增加的功能都是在扩展原有的功能,既要保证性能又要保证质量,我们往往都会使用异步线程池来处理,然而却增加了很多不确定性因素。由此我设计了一套通用的异步处理......
  • 面试-JS异步进阶
    面试题:......
  • asio的同步和异步读写
    同步读写的优缺点缺点:读写是阻塞的,如果客户端不发送数据的话,服务器就会一直阻塞在read上,导致服务器一直处于等待状态。一般是通过开辟一个新的线程来服务客户端的请求,但是一个进程可以开辟的线程数是有限的,大约为2048个,在linux环境下可以通过unlimit增加线程数,但是线程过多也......
  • C++ 异步 async future 等
    async和future这个和C#的Task有点像。#include<iostream>#include<string>#include<memory>#include<future>#include<thread>usingnamespacestd;intcalculate(){std::this_thread::sleep_for(std::chrono::seconds(2));......
  • 完整的 Redux 工具包 - 异步逻辑(第 -2 部分)
    1。reduxtoolkit中的异步逻辑简介在redux中处理异步逻辑通常涉及大量样板代码,例如创建操作类型、操作创建者和减速器来处理不同的状态(加载、成功、错误)。reduxtoolkit使用createasyncthunk简化了这一过程,它允许您以最少的设置为异步操作定义“thunk”。createasyncthunk......
  • 一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
    前言最近有不少小伙伴在问:.NET有什么值得推荐的网络通信框架?今天大姚给大家分享一个.NET开源、免费(MITLicense)、快速、低延迟的异步套接字服务器和客户端库:NetCoreServer。项目介绍NetCoreServer是一个.NET开源、免费(MITLicense)、快速、低延迟的异步套接字服务器和客户端库。它支......
  • 一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
    前言最近有不少小伙伴在问:.NET有什么值得推荐的网络通信框架?今天大姚给大家分享一个.NET开源、免费(MITLicense)、快速、低延迟的异步套接字服务器和客户端库:NetCoreServer。项目介绍NetCoreServer是一个.NET开源、免费(MITLicense)、快速、低延迟的异步套接字服务器和客户端库。......
  • Java后端中的请求优化:从请求合并到异步处理的实现策略
    Java后端中的请求优化:从请求合并到异步处理的实现策略大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代微服务架构中,后端系统的性能直接影响到用户体验。为了提升系统的响应速度和吞吐量,请求优化成为了重要的关注点。本文将探讨几种常见的请求优......
  • 【Python爬虫系列】_022.异步文件操作aiofiles
    课程推荐我的个人主页:......
  • 为什么 Elixir 在异步处理方面比 Nodejs 更好?
    简单答案:Node.js是单线程的,并拆分该单线程来模拟并发,而Elixir利用Erlang虚拟机BEAM的原生并发和并行性来同时运行进程。下面,我们将更深入地理解这种差异,探索两个关键概念:Node.js事件循环和Elixir的BEAMVM和OTP。这些元素对于理解每种技术如何处理执行异步任务以及这......