flask-socketio server 端定时推送数据时, 依照惯例使用while循环推送,但是发送不成功。
改成for 循环发送10次,发现会在10次循环结束后一起发送。
查询网络发现有用多线程,有用socketio.start_background_task实现 的。
不过问题的关键在于socketio.sleep。
在每一次循环里添加一行 socketio.sleep(1), 这个命令会起一个异步推送的功效。
@socketio.on('starttest')
def start(data):
print('start testing')
i=0
while 1:
i+=1
if not run_state.is_set():
break
print('index is ',i)
data = Facedata()
socketio.emit('data',{'data':data})
socketio.sleep(0.03)
#time.sleep(1)
print('stop send msg')