文章目录
- 安装
一、关于 aiosignal
- Github : https://github.com/aio-libs/aiosignal
- 官方文档:https://aiosignal.aio-libs.org/
- gitter聊天:https://gitter.im/aio-libs/Lobby
- 许可证 : Apache 2
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
https://pyloong.github.io/pythonic-project-guidelines/guidelines/advanced/signal_decouple/#aiosignal
aiosignal 是从 aiohttp 中独立出来的异步信号框架。
它和 blinker、pydispatcher 这两个信号框架区别有:
一,它是一个异步信号框架,可以订阅异步事件;
二,在订阅事件时,属于强引用。
在底层, Signal
是继承了 MutableSequence
类,使用 Signal.append
方法将订阅的事件保存在对象的属性中。
当调用 Signal.send 方法时,会遍历订阅的事件列表,然后执行。
2025-03-19(三)