Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中网络节点之间的无服务器通信_Python_Networking - Fatal编程技术网

python中网络节点之间的无服务器通信

python中网络节点之间的无服务器通信,python,networking,Python,Networking,我不确定这个问题是否属于这里,因为它可能有点过于宽泛。如果是这样,我道歉。无论如何,我正计划用python启动一个项目,我正试图找出如何最好地实现它,或者它是否以任何实际的方式可行。该系统将由几个“节点”组成,这些节点本质上是python脚本,用于将与i/o相关的各种硬件、控制材料的继电器、测量材料的输入、rfid阅读器等进行对话的其他协议转换为我的系统的通用协议。我不是编程或网络专家,但这部分我可以处理,我有一个使用rs-485的旧报警系统模块,我可以成功地控制和读取。我想让节点通过网络相互通

我不确定这个问题是否属于这里,因为它可能有点过于宽泛。如果是这样,我道歉。无论如何,我正计划用python启动一个项目,我正试图找出如何最好地实现它,或者它是否以任何实际的方式可行。该系统将由几个“节点”组成,这些节点本质上是python脚本,用于将与i/o相关的各种硬件、控制材料的继电器、测量材料的输入、rfid阅读器等进行对话的其他协议转换为我的系统的通用协议。我不是编程或网络专家,但这部分我可以处理,我有一个使用rs-485的旧报警系统模块,我可以成功地控制和读取。我想让节点通过网络相互通信,这样我就可以将它们分发到不同的位置(目前在同一个子网中)。显而易见的方法是使用他们都连接到的服务器,这样他们就可以被轮询并获得命令来翻转输出或做其他事情。这不应该太难使用扭曲或类似的东西

问题是,如果这个服务器由于某种原因停止工作,其他一切也会停止。我想我想要的是某种无服务器通信,除了网络本身之外,没有单点故障。消息代理似乎都需要某种类型的服务器,我真的找不到任何其他适合的服务器。所有节点必须知道所有其他节点的状态,因为我需要能够根据连接到其他节点的事物的状态执行功能,例如,如果该门已经打开,则不要打开该门。也许这可以通过多播或广播来实现,但这似乎有点不安全,而且并不正确。我想到的一种方法是,以某种方式指定一个节点来接受来自其他节点的连接,充当消息路由器,并安排某种备份,这样,如果该节点崩溃或消失,另一个预定节点将接管,而其他节点将改为连接到该节点。这看起来很复杂,我不确定这是否比使用消息代理更好


正如我所说的,我不确定这是一个合适的问题,但如果有人能给我一个如何做到这一点的提示,或者如果有类似的东西,我可以研究。如果我很愚蠢,请让我知道:)

有些消息传递系统不需要中央消息代理。您可以从查看ZeroMQ开始

我最终用python制作了自己的无服务器消息传递系统。它还没有准备好,代码也很混乱,但它可以工作。它具有自动发现节点、共享频道和主题以及我需要的功能。如果有人对使用它感兴趣或想提供帮助,请访问:


您可以有一台主服务器和一台备份服务器。如果备份服务器检测到主服务器不工作,它将接管主服务器。类似地,所有节点要么知道备份服务器的存在,要么会被备份服务器告知“嘿,我是新服务器”或其他信息。看起来简单多了。是的,这可能是一个很好的建议,也是一个相当简单的建议!ZeroMQ看起来真的很酷!这可能正是我想要的。我会研究的,谢谢你的建议!如果没有更多的建议,我会将此标记为正确答案。