多个ipc发布者和一个使用python-zmq的订阅者

时间:2013-04-12 19:46:15

标签: python zeromq pyzmq

我想知道是否可以使用zmq ipc为一个订阅者设置多个ipc发布者...

抽象地说我只有一个这样的发布者,但是我需要运行它的多个实例来获取几种数据类型,但每次都发布相同的格式。

    context = zmq.Context()
    publisher = context.socket(zmq.PUB)
    publisher.connect("ipc://VCserver")
    myjson = json.dumps(worker.data)
    publisher.send(myjson)

我的订阅者:

    context = zmq.Context()
    subscriber = context.socket(zmq.SUB)
    subscriber.bind("ipc://VCserver")
    subscriber.setsockopt(zmq.SUBSCRIBE, '')
    while True:
        response = subscriber.recv()
        if response:
            data = json.loads(response)
            check_and_store(data)

我的订阅者每次都从数据中检查相同的参数并将其存储在数据库中。

我不知道是否可能,因为这种通信模式使用共享文件并且可能我应该考虑每个实例的发布者 - 订阅者对...

编辑:每个出版商将发送2kb aprox,100次/秒

1 个答案:

答案 0 :(得分:2)

你绝对可以拥有多个发布者,唯一的限制是你不能在一个IPC套接字上拥有多个绑定器 - 每个连续绑定只会破坏前一个(而不是TCP,你将获得EADDRINUSE如果您尝试绑定到已在使用的界面)。你的案子应该可以正常工作。