仅使用nng建立网络

pynng的Python项目详细描述


我是平恩

MIT LicensePyPI VersionBuild succeedingWheels buildingdocs

nanomsg next generation(nng)的人体工程学绑定,Python。 pynng在nng的全部功能之上提供了一个很好的接口。nng,和 因此,pynng使单个进程之间的通信变得容易 网络上的一台或多台计算机。这个库与Python兼容 ≥3.5。nng是的rewritingNanomsg,它是{a9}的精神继承者。在

目标

提供一个Pythonic,在Windows和Unix-y上使用现成的库 平台。就像nng本身一样,许可证是MIT的,所以它可以在没有许可证的情况下使用 限制。在

安装

在Windows、MacOS和Linux上

pip3 install pynng

应该足够了。注意,在32位Linux和macOS上没有二进制发行版 是可用的,所以CMake也是必需的。在

从GitHub回购进行构建同样有效,natch:

^{pr2}$

(如果要运行测试,还需要pip3 install pytest和{},然后只运行pytest。)

pynng也可以在BSD上工作。谁知道呢!在

使用pynng

使用pynng很容易:

frompynngimportPair0s1=Pair0()s1.listen('tcp://127.0.0.1:54321')s2=Pair0()s2.dial('tcp://127.0.0.1:54321')s1.send(b'Well hello there')print(s2.recv())s1.close()s2.close()

因为pynng套接字支持在套接字的__init__中设置大多数参数 方法,并且是一个上下文管理器,则上面的代码可以编写得更短:

frompynngimportPair0withPair0(listen='tcp://127.0.0.1:54321')ass1, \
        Pair0(dial='tcp://127.0.0.1:54321')ass2:s1.send(b'Well hello there')print(s2.recv())

将pynng与异步框架一起使用

异步发送也适用于

trioasyncio。这里有一个例子 使用trio:

importpynngimporttrioasyncdefsend_and_recv(sender,receiver,message):awaitsender.asend(message)returnawaitreceiver.arecv()withpynng.Pair0(listen='tcp://127.0.0.1:54321')ass1, \
        pynng.Pair0(dial='tcp://127.0.0.1:54321')ass2:received=trio.run(send_and_recv,s1,s2,b'hello there old pal!')assertreceived==b'hello there old pal!'

还有许多其他协议可用:

  • Pair0:一对一,双向通信。在
  • Pair1:一对一、双向通信,还支持 多义插座
  • Pub0Sub0:发布/订阅套接字。在
  • Surveyor0Respondent0:向受访者广播一份调查,例如 提供哪些服务。在
  • Req0Rep0:请求/响应模式。在
  • Push0Pull0:聚合来自多个源的消息和负载平衡 在众多目的地中。在

示例

一些示例(好的,只有两个示例)在 examples 目录。在

Git分支策略

稳定分支是master。将永远不会是git push -f 在主人身上。另一方面,所有其他分支都不稳定; 它们可能会被删除、重新设置基址、强制推送以及其他任何形式的怪异行为 生意。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Selenium中弹出的java句柄窗口   java将格式化消息从任何片段传递到活动   java如何从int类型的方法返回多个整数   servlets数据不会使用java类和bean插入数据库   java如何修改Solr给出的搜索结果页面?   java如何在wildfly中重定向应用程序路径?   java使用Apache异步HTTP客户端从InputStream构造多部分请求   java解析来自REST的压缩输入流   java上载文件失败,原因是Vaadin Spring PlupLocaddon   使用需要CSRF令牌的旧端点的javascript   java如何在viewpager应用程序中将图像设置为墙纸?   java Axis2与SharePoint 2013(ADFS/FedAuth cookie)   java H2选择:意外的类型39映射   Docker Composition中拒绝java Spring应用程序连接   使用Java的ibm mq ibm mq获取LGETTIME   java循环逻辑中的漏洞   javaspringcom。mongodb。util。JSONParseException   方法调用“振动”可能会产生java。更新到Android Studio 3后出现lang.NullPointerException警告   datetime如何将日历的时间与java进行比较。sql。时间物体?