Как использовать блочную функцию с «start_background_task» во Flask? - PullRequest
1 голос
/ 16 апреля 2019

Я настраиваю новый сервер с помощью Flask.Он передает изображения с сервера на веб с помощью flask_socketio и zmq.Я хочу использовать zmq.recv () в качестве функции блока.Однако это заблокирует колбу.Все сообщения из Интернета будут заблокированы.Как я могу использовать функцию блокировки в колбе, без socketio.sleep ()

Я попытался установить zmq.NOBLOCK в zmq.recv ().Затем добавьте socketio.sleep (0,001).Это сработало, но очень уродливо.

Вот мой код.

ctx = zmq.Context()
sock = ctx.socket(zmq.ROUTER)
sock.bind("tcp://*:9988")


def recvThread():   
    while True:     
            img = sock.recv()   
                socketio.emit("frame", img)


if __name__ == '__main__':
    init_zmq()
    with thread_lock:
        if thread is None:
            socketio.start_background_task(target=recvThread)
    socketio.run(app, host='0.0.0.0', port=5000)

Есть ли какой-либо флаг, который можно использовать в этой ситуации?

1 Ответ

0 голосов
/ 18 апреля 2019

Я решил эту проблему, заменив zmq на eventlet.green.zmq. Ref

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...