跳转到主要内容

异步去中心化actor

项目描述

AsyncActor是一个异步Python模块,有助于在异构、有时断开连接的网络中进行服务发现和“某种程度上领导者”选举。

AsyncActor可以在任何可靠的广播频道上运行。本版本包括Serf和MQTT的后端。

AsyncActor发送尽可能少的包,因此非常适合具有许多站点但带宽有限的物联网相关应用。

操作理论

假设您有一个无损耗的网络,具有有界延迟(让我们假设一秒)。进一步假设您希望在十秒内知道您的节点是否仍然在线。

AsyncActor每七到九秒发送一个信标消息。该消息包括一个已发送信标的N个先前主机的列表;列表中最后一个主机将是下一个发送者。

从第七秒开始的时隙用于随机主机,这些主机希望进入信标发送业务。如果主机列表当前小于N,这种情况的可能性就比较高。第八秒的时隙用于列表末尾的主机;最后一个主机将首先发送消息,但如果其信标没有被看到,则下一个最后的主机将发送其消息,依此类推。

第九秒的时隙用于最后的手段消息,即任何参与的主机都可以并发送其信标消息。

在第十秒解决冲突,即消息列表按确定性排序:获胜者将通知其客户端是否已开始新的时隙以及N个主机时隙是否已全部填满。

它使用anyio <https://github.com/agronholm/anyio>作为其底层的异步框架。

PyPI latest version badge Code coverage badge

安装

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 (32.6 kB 查看哈希值)

上传时间 源代码

构建分发

asyncactor-0.24.0-py3-none-any.whl (25.0 kB 查看哈希值)

上传时间 Python 3

支持者: