订阅服务器不显示,ZeroMQ订阅服务器在unittest中不接收任何数据。为什么?

我无法理解我的数据。在

我编写了一个测试,以确保我的Publisher类成功地发送数据,并且如果绑定到该类,则会收到该数据。在

类本身继承自Thread,并公开一个publish()方法,我可以调用该方法来通过Queue()将要广播的数据传递给订阅服务器。在

然而,在我的测试中,数据从未到达。我保证使用相同的

我认为这是个问题。在

我是一个ZeroMQ新手,但我以前已经设法让PubSub模式工作。在

测试代码:# Import Built-ins

import time

import json

import queue

from queue import Queue

from threading import Thread

# Import Third-Party

import zmq

def test_publisher_sends_data(self):

port = 667

name, topic, data = 'TestNode', 'testing', ['this', 'is', 'data']

encoded_name = json.dumps(name).encode('utf-8')

encoded_topic = json.dumps(topic).encode('utf-8')

encoded_data = json.dumps(data).encode('utf-8')

expected_result = (encoded_name, encoded_topic, encoded_data)

publisher = Publisher(port)

print("starting publisher")

publisher.start()

q = Queue()

def recv(q):

ctx = zmq.Context()

zmq_sock = ctx.socket(zmq.SUB)

print("Connecting to publisher")

zmq_sock.connect('tcp://127.0.0.1:%s' % port)

while True:

print("waiting for data..")

q.put(zmq_sock.recv_multipart())

print("data received!")

t = Thread(target=recv, args=(q,))

t.start()

print("sending data via publisher")

for i in range(5):

self.assertTrue(publisher.publish(name, topic, data))

time.sleep(0.1)

print("checking q for received data..")

try:

result = q.get(block=False)

except queue.Empty:

self.fail("Queue was empty, no data received!")

self.assertEqual(expected_result, result)

Publisher类

^{pr2}$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值