Использование ZMQ внутри rq worker

Я пытаюсь настроить zmq гнездо внутри рабочей задачи в python-rq,

Если я создам 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() звонок ничего не делает.

1 ответ

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

Когда вы вызываете send, сообщение не отправляется фактически, оно копируется в буферы внутри сокета / контекста для последующей отправки по контексту. Таким образом, когда ваша функция возвращается и локальный сокет / контекст выходит из области видимости, тогда сообщение, вероятно, удаляется до того, как оно отправлено контекстом.

Другие вопросы по тегам