问题标签 [pynng]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

python-asyncio - pynng:如何在 REP0 套接字上设置并继续使用多个上下文

我正在研究一个“服务器”线程,它负责处理一些“客户端”的 IO 调用。

通信是使用pynng v0.5.0完成的,服务器有自己的asyncio循环。

每个客户端通过发送第一个请求来“注册”,然后循环接收结果并发送回 READY 消息。

在服务器上,目标是将每个客户端的第一条消息视为注册请求,并创建一个专用的工作任务,该任务将循环执行 IO 工作,发送结果并等待该特定客户端的 READY 消息。

为了实现这一点,我试图利用 REP0 套接字的上下文特性。

旁注

  • 我本来想用标记这个问题,但我没有足够的声誉。

  • 虽然我是这个网站的狂热消费者,但这是我的第一个问题 :)

  • 我确实知道 PUB/SUB 模式,假设出于自学目的,我选择不将其用于此服务。

问题:

经过几次迭代,一些 READY 消息被服务器的注册协程拦截,而不是被路由到正确的 worker 任务。

由于我无法共享代码,因此我为我的问题编写了一个复制器并将其包含在下面。

更糟糕的是,正如您在输出中看到的,一些结果消息被发送到错误的客户端 ( ERROR:root:<Worker 1>: worker/client mismatch, exiting.)。

它看起来像一个错误,但我不完全确定我理解如何正确使用上下文,所以任何帮助将不胜感激。

环境:

代码:

输出:

编辑(2020-04-10):将 pynng 和底层 nng.lib 更新到最新版本(主分支),仍然是同样的问题。

0 投票
1 回答
398 浏览

python - nng 到 pynng 的通信不起作用

我正在尝试制作一个通过 nng 发布图像的 c 程序服务器,以及一个通过 pynng 订阅图像的 python 客户端。

出于某种原因,我无法连接这两个部分,我不知道为什么。C/C++ 程序编译和运行良好,python 程序也是如此,但是在 C/C++ 程序上发布了一些内容,在 python 客户端上没有收到任何内容。客户端和服务器在同一台机器上运行。这是我的服务器 C/C++ 代码:

这是我的客户端python代码:

有人可以帮我理解为什么这不起作用吗?

0 投票
1 回答
356 浏览

python - nng 到 pynng 发布/订阅。客户未收到任何消息

我有以下服务器(C++):

以及以下客户端(python):

我不明白为什么没有消息到达客户端。我已经设置了主题和 recv_max_size 但仍然没有消息到达客户端。我现在在这里做错了什么?

0 投票
1 回答
213 浏览

python - 使 pynng 和 socket 相互通信

TL;博士

我使用启动服务器pynng,然后来自 Python 标准库的客户端socket将尝试向它发送消息。

问题是客户端可以发送消息,但服务器没有注意到它。因此,它不起作用。

我错过了什么吗?一些低级协议设置?一些终止字符?

我这样做的原因是我将构建一个pynng用作服务器的 Python 脚本。然后一个非 Python 程序(我假设它具有基本 TCP 协议的知识)将尝试与这个 Python 服务器通信。因此,我正在使用恕我直言,我可以操作的最原始的套接字库,socket标准库中的模块。

细节

我将在讨论时展示代码片段,但我将在最后展示完整的最小代码示例。

我正在尝试使用pynng

然后,看起来像这样的客户端将尝试连接到它:

我把它们放在一起使用threading

最低工作代码

总而言之,这是最低限度的工作代码:

然后我在终端中运行它

似乎server无法发送recv消息,recv因此尝试在 10000 毫秒时超时。

0 投票
1 回答
32 浏览

python - 使用 pynn 进行简单的配对通信

我正在尝试使用pynng建立一个非常简单的配对通信,但是当通过 TCP 从不同的设备发送时,侦听实例似乎从未收到任何消息。

客户端.py

服务器.py

所以真的我只是想在这里向服务器发送任何东西,但它从来没有收到任何东西。我在这里想念什么?

0 投票
1 回答
60 浏览

tcp - NNG(Nano Message Next Generation)是否会定期自动传输一些心跳?

我使用 NNG 作为我的服务器间消息队列。

背景:

  1. 我正在实现一对长时间的后台服务,它们正在与 NNG 通信;
  2. 协议:pair0@tcp;
  3. 有效载荷消息可能会出现一秒钟,也可能是一天;

我的问题: 如果在特定时间段内没有产生消息,NNG 是否会自动定期向每个对等方发送“心跳”消息以保持 TCP 连接处于活动状态?

如果不是,我应该自己做“心跳”吗?

顺便说一句,这是我第一次使用 NNG。我不知道是否有它的官方/人口支持论坛,所以我在这里问我的问题。如果存在这样的论坛,请。告诉我。谢谢!