异步去中心化actor
项目描述
AsyncActor是一个异步Python模块,有助于在异构、有时断开连接的网络中进行服务发现和“某种程度上领导者”选举。
AsyncActor可以在任何可靠的广播频道上运行。本版本包括Serf和MQTT的后端。
AsyncActor发送尽可能少的包,因此非常适合具有许多站点但带宽有限的物联网相关应用。
操作理论
假设您有一个无损耗的网络,具有有界延迟(让我们假设一秒)。进一步假设您希望在十秒内知道您的节点是否仍然在线。
AsyncActor每七到九秒发送一个信标消息。该消息包括一个已发送信标的N个先前主机的列表;列表中最后一个主机将是下一个发送者。
从第七秒开始的时隙用于随机主机,这些主机希望进入信标发送业务。如果主机列表当前小于N,这种情况的可能性就比较高。第八秒的时隙用于列表末尾的主机;最后一个主机将首先发送消息,但如果其信标没有被看到,则下一个最后的主机将发送其消息,依此类推。
第九秒的时隙用于最后的手段消息,即任何参与的主机都可以并发送其信标消息。
在第十秒解决冲突,即消息列表按确定性排序:获胜者将通知其客户端是否已开始新的时隙以及N个主机时隙是否已全部填满。
它使用anyio <https://github.com/agronholm/anyio>作为其底层的异步框架。
安装
AsyncActor需要一个后端,即运行中的Serf代理或MQTT代理。
要安装 AsyncActor,请运行以下命令
$ pip install asyncactor
或者也可以(但实际上你应该使用pip)
$ easy_install asyncactor
或者从源代码安装
$ python setup.py install
入门指南
以下示例需要运行的异步循环。《Trio <https://github.com/python-trio/trio>》推荐,但asyncio也行。
from asyncactor import client as actor
from somewhere import some_transport
async with some_transport.connect('localhost') as t:
async with actor(t, prefix=('actor','test')) as client:
async for client.events as m:
print(m)
开发
您可以使用以下命令运行测试
$ serf agent & # start serf agent
$ mosquitto
$ python3 -mpytest tests
项目详情
下载文件
下载适合您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
asyncactor-0.24.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b8f3825e5923a69b48be300dea1efbdffc8f6ad17676523b786f861588594b67 |
|
MD5 | b59a4c99a6044938d30c7d467421d053 |
|
BLAKE2b-256 | b944c6a357fc43d5e6bfbb837af36ceb453bf96d66d58b1e5dd728138419ab56 |
asyncactor-0.24.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a646d2f0288f932d8cd003dc1f28f7e0491e8ac3d401320b8f19032f7552be6e |
|
MD5 | bdb93bee352567af0240c12478aae399 |
|
BLAKE2b-256 | 08c8dac1ac2a354621b2bedca349d4604a6c91b6aeee846ffc242fa3e7516ce1 |