LineHostBuffer
类源码
hbuf = LineHostBuffer(
api_route: str = "/sync-stream",
endpoint: str | None = None,
maxlen: int = 2,
)
透过网络服务,实现并提供以行为单元的缓存。
轮换缓存需要设置一个最大存储区长度。该缓存是基础缓存LineBuffer、针对多设备所设计的扩展版。其支持单服务端-多客户端模式,透过网络服务实现同步。要了解如何使用该缓存,可以查阅本页的范例,或是指南。
别名
该类可以按以下方式之一获取
import syncstream
syncstream.LineHostBuffer
syncstream.host.LineHostBuffer
参数
| 参数 | 类型 | 必选 | |
|---|---|---|---|
api_route | str | API的路由路径。 | |
endpoint | str | None | API的endpoint名称。若设为None,则会从api_route推断endpoint名称。 | |
maxlen | int | 所存储的最大行数。该值和deque.maxlen的含义相同。 |
方法
close
hbuf.close(exc: BaseException | None = None)
关闭 IO。该方法只会生效一次。第二次调用则无任何效果。
read_serialized
lines: tuple[str | SerializedMessage, ...] = hbuf.read_serialized(size: int | None = None)
读取信息(序列化)。
和read(...)的功能相同。不过,该方法返回的所有数据都是已经序列化过、可以和JSON兼容的数据。
该方法用来提供查询服务。
输入
| 参数 | 类型 | 必选 | |
|---|---|---|---|
size | int | None | 若设为None,则会返回整个存储区。若设为一个整数,则会返回最后size条信息。 |
输出
| 参数 | 类型 | |
|---|---|---|
lines | tuple[str | SerializedMessage, ...] | 所获取的多项记录信息。结果按照先入先出的顺序排序。 |
serve
hbuf.serve(api: flask.Flask)
向Flask应用载入服务。
输入
| 参数 | 类型 | 必选 | |
|---|---|---|---|
api | flask.Flask | Flask对象。所有与该LineHostBuffer关联的网络服务、都会注册到Flask对象上。 |
stop_all_mirrors
flag: bool = hbuf.stop_all_mirrors()
向所有的mirror发送中断信号。
该操作用于安全中断进程。它 并不能保证进程会立刻结束。针对每个mirror,在每次要写信息的时候,检查中断信号。
若用户打算使用该方法,请确保在进程中捕获了StopIteration。该异常不会回送到缓存中。
输出
| 参数 | 类型 | |
|---|---|---|
flag | bool | 若中断成功,返回True。若中断遭到了拒绝,返回False。若服务端有任何异常,抛出错误。 |
reset_states
flag: bool = hbuf.reset_states()
重置缓存的状态。
若需要复用缓存,则应当调用该方法。
输出
| 参数 | 类型 | |
|---|---|---|
flag | bool | 若重置成功,返回True。若重置遭到了拒绝,返回False。若服务端有任何异常,抛出错误。 |
运算符
__len__
n_buffer_items: int = len(hbuf)
缓存中的行/条目数。
服务
向Flask应用注册本实例后,则会启用以下服务,其中加粗的参数是必需的。
<api_route>
基础API。使用它们来维护用来保存各条信息的存储区域。
| 方法 | |||
|---|---|---|---|
| GET |
|
| 获取多条信息。与LineBuffer.read()相若。 |
| POST |
|
| 将来自远端的的数据写入存储。用户不应当直接使用该方法,这是因为该方法是为了和LineHostMirror联动设计的。 |
| DELETE |
| 清理存储区,但该方法不会重置缓存的状态。 |