2016-05-23 7 views
0

Я пытаюсь установить zmq Сокет внутри рабочего задания в python-rq.Использование ZMQ внутри rq worker

Если я создаю 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

Так что я не знаю, питона, так что это не может быть правильным, но его очень похожи на проблемы, которые я имел с ZeroMQ в C++ так:

При вызове отправить сообщение Isnt Acctually посланных, его скопировали к буферам внутри сокета/контекста для последующей отправки контекстом. Поэтому, когда ваша функция возвращается и локальный сокет/контекст выходит из области видимости, сообщение скорее всего удаляется до его отправки контекстом.

 Смежные вопросы

  • Нет связанных вопросов^_^