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:

返回:

最早放入的元素