2016-05-23 64 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發送,它的複製到套接字/上下文中的緩衝區,以供上下文稍後發送。所以當你的函數返回並且本地套接字/上下文超出範圍時,那麼這個消息可能會在上下文發送之前被刪除。