cassiacommon
提供了常用的工具类或函数。
SimpleFuture
一个轻量级的异步结果容器,用于在异步代码中等待一个事件完成并获取其结果。
示例
1import asyncio
2import cassiacommon
3
4
5async def main():
6 print("start simple future")
7 fut = cassiacommon.SimpleFuture()
8
9 async def producer():
10 print("producer sleep 3 seconds...")
11 await asyncio.sleep(3)
12 fut.set_result(200, "OK")
13 print("producer ok")
14
15 asyncio.create_task(producer())
16 code, value = await fut.wait()
17 print("simple future done:", code, value)
18
19
20asyncio.run(main())
API
- class SimpleFuture
轻量级一次性事件同步原语,基于 asyncio.ThreadSafeFlag 实现。
- __init__() SimpleFuture
初始化对象
- set_result(code, value)
设置结果并唤醒等待者。只能生效一次,重复调用会被忽略。
- Parameters:
code: 自定义状态码
value: 需要传递的数据
- 返回:
无
- async wait() Tuple[code, value]
挂起直到结果就绪,然后返回打包好的数据。
- Parameters:
无
- 返回:
code: 自定义状态码
value: 传递的数据
AsyncQueue
一个轻量级的异步队列,用于在异步任务之间传递数据。
示例
1import asyncio
2import cassiacommon
3
4
5async def main():
6 print("start async queue")
7
8 q = cassiacommon.AsyncQueue(max_size=4)
9 q.put_nowait("a")
10 q.put_nowait("b")
11 print(await q.get())
12 print(await q.get())
13
14 print("async queue done")
15
16
17asyncio.run(main())
API
- class AsyncQueue
轻量级一次性事件同步原语,基于 asyncio.ThreadSafeFlag 实现。
- __init__(max_size=16) AsyncQueue
初始化对象
- put_nowait(item)
非阻塞放入元素。如果队列已满,则直接丢弃,不抛出异常。
- Parameters:
item: 待放入的对象
- 返回:
无
- async get() Any
取出队首元素。若队列为空,则挂起直到有数据。
- Parameters:
无
- 返回:
最早放入的元素