aiosignal

文章目录


一、关于 aiosignal


aiosignal 管理 asyncio 项目中回调的项目。

Signal是已注册的异步回调列表。

信号的生命周期 有两个阶段:创建内容后 可以使用 标准列表操作 来填充:sig.append() 等。

在你调用sig.freeze()后,信号被冻结:添加,删除 并且禁止丢弃回调。

唯一可用的操作是调用先前注册的 使用 await sig.send(data)

有关具体用法示例,请参阅 Signals https://docs.aiohttp.org/en/stable/web_advanced.html#aiohttp-web-signals “Web服务器高级” 部分 https://docs.aiohttp.org/en/stable/web_advanced.html 章节的 aiohttp文档


安装

要求

  • Python>=3.8
  • Frozenlist>=1.0.0
pip install aiosignal

使用示例:

使用示例

import asyncio
from aiosignal import Signal

signal = Signal('signal')

async def receiver(message: str):
    print(f'I receive message: {message}')

signal.append(receiver)
signal.freeze()

async def main():
    await signal.send('I am god!')

if __name__ == '__main__':
    asyncio.run(main())

其它资料

aiosignal 是从 aiohttp 中独立出来的异步信号框架。
它和 blinker、pydispatcher 这两个信号框架区别有:
一,它是一个异步信号框架,可以订阅异步事件;
二,在订阅事件时,属于强引用。
在底层, Signal 是继承了 MutableSequence 类,使用 Signal.append 方法将订阅的事件保存在对象的属性中。
当调用 Signal.send 方法时,会遍历订阅的事件列表,然后执行。


2025-03-19(三)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值