flash-socketio从后台任务中发射不出。

问题描述 投票:1回答:1

以下是我的代码片段,我正在运行一个后台任务,并希望在事件被调用时发出id。

管理.py

from threading import Lock 

continue_reading = True
thread = None
thread_lock = Lock()

socketio = SocketIO(app, cors_allowed_origins='*', logger=True, engineio_logger=True, **params)

def background_task(app):
    with app.app_context():
        while continue_reading:
            id = setup_rfidreader() 
            logging.debug("chip id from bg {}".format(id)) 
            socketio.emit('chip was readed', {"timestamp": id} )

@socketio.on('read_card')
def handle_read_card_event(): 
    global thread
    with thread_lock:
        if thread is None:
            thread = socketio.start_background_task(background_task, current_app._get_current_object())

后台任务防止调用其他事件,为什么?

def setup_rfidreader():
    reader = SimpleMFRC522()
    print("Hold a tag near the reader")
    try:
        id, text = reader.read()
        sleep(.5)
        print(id)
        return id
    except KeyboardInterrupt:
        print('interrupted')
    finally:
        GPIO.cleanup()
python flask-socketio python-socketio
1个回答
0
投票

似乎事件小程序和redis的url没有配置好。

© www.soinside.com 2019 - 2024. All rights reserved.