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 |
| 清理存储区,但该方法不会重置缓存的状态。 |