相关疑难解决方法(0)

zeromq:如何防止无限期等待?

我刚刚开始使用ZMQ.我正在设计一个应用程序的工作流程为:

  1. 许多客户端之一(具有随机PULL地址)在5555向服务器发送请求
  2. 服务器永远等待客户端PUSHes.当一个人来时,会针对该特定请求生成一个工作进程.是的,工作进程可以同时存在.
  3. 当该过程完成它的任务时,它会将结果推送给客户端.

我假设PUSH/PULL架构适用于此.请纠正我.


但是我该如何处理这些情况呢?

  1. 当服务器无法响应时,client_receiver.recv()将等待无限时间.
  2. 客户端可以发送请求,但它会在之后立即失败,因此工作进程将永远停留在server_sender.send().

那么如何设置PUSH/PULL模型中的超时


编辑:感谢user938949的建议,我得到了一个有效的答案,我正在为后代分享它.

python zeromq

65
推荐指数
4
解决办法
6万
查看次数

如何避免高CPU使用率?

我创建了一个zmq_forwarder.py单独运行并将消息从应用程序传递到sockJS连接,我现在正在研究烧瓶应用程序如何通过zmq从sockJS接收消息.我正在粘贴我的内容zmq_forwarder.py.我是ZMQ的新手,我不知道为什么每次运行它,它都使用100%的CPU负载.

import zmq

# Prepare our context and sockets
context = zmq.Context()

receiver_from_server = context.socket(zmq.PULL)
receiver_from_server.bind("tcp://*:5561")

forwarder_to_server = context.socket(zmq.PUSH)
forwarder_to_server.bind("tcp://*:5562")

receiver_from_websocket = context.socket(zmq.PULL)
receiver_from_websocket.bind("tcp://*:5563")

forwarder_to_websocket = context.socket(zmq.PUSH)
forwarder_to_websocket.bind("tcp://*:5564")

# Process messages from both sockets
# We prioritize traffic from the server
while True:

    # forward messages from the server
    while True:
        try:
            message = receiver_from_server.recv(zmq.DONTWAIT)
        except zmq.Again:
            break

        print "Received from server: ", message
        forwarder_to_websocket.send_string(message)

    # forward messages from the websocket
    while True:
        try:
            message = …
Run Code Online (Sandbox Code Playgroud)

python zeromq flask pyzmq sockjs

1
推荐指数
1
解决办法
2383
查看次数

标签 统计

python ×2

zeromq ×2

flask ×1

pyzmq ×1

sockjs ×1