2016-05-23 62 views
0

我正在尝试在python-rq的工作任务内设置一个zmq套接字。在rq worker中使用ZMQ

如果我创建context任务函数内部:

def push(user, task_id, data): 
    """Push message to `user` over websocket. 
    """ 


    ctx = zmq.Context() 
    pub = ctx.socket(zmq.PUB) 
    pub.connect('ipc:///tmp/message_flow_in') 

    pub.send(b"0 " + json.dumps({'username': user, 
            'id':  task_id, 
            'data':  data 
            } 
           ).encode('utf-8') 
      ) 

pub.send()调用不起任何作用。

+0

您是否尝试过使用**'tcp' ** - 基于**'flags = zmq.NOBLOCK' **的传输类进行诊断的相同场景(即使对于两个对等节点都托管相同的本地主机)? – user3666197

回答

0

所以我不知道蟒蛇,因此这可能是不正确的,但它非常类似的问题我已经与在C++中zeromq这样:

当你调用发送邮件的心不是acctually发送,它的复制到套接字/上下文中的缓冲区,以供上下文稍后发送。所以当你的函数返回并且本地套接字/上下文超出范围时,那么这个消息可能会在上下文发送之前被删除。