python – flask和flask-socketio刷新所有发出的事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – flask和flask-socketio刷新所有发出的事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1939字,纯文字阅读大概需要3分钟。
内容图文
![python – flask和flask-socketio刷新所有发出的事件](/upload/InfoBanner/zyjiaocheng/726/3abfb7be1c624177b765d852ee2b13dd.jpg)
你如何冲洗flask-socketio emit事件,以便多条线路流到客户端,而不是多条线路一次全部通过?
我正在使用Flask和flask-socketIO制作一个网络应用程序,让用户下棋对抗开源象棋AI,比如gnuchess和crafty.国际象棋AI打印他们的“思考”作为stdout到服务器终端,但我正在使用flask-socketIO向用户发出这种想法.
这一切都是设置和工作,但我遇到的问题是每个思路都在一个大块中出现,而不是在AI打印时输出每个单独的行.
例如,在与gnuchess对战时,服务器打印出这样的想法:
AI thinking: Thinking...
AI thinking: 1 +4 0 2 a5
AI thinking: 1 +9 0 4 b5
AI thinking: 1 +51 0 8 d5
AI thinking: 1 +53 0 21 Nc6
AI thinking: 2 -1 0 47 Nc6 Nc3
AI thinking: 3 +53 0 155 Nc6 Nc3 Nf6
AI thinking: 4 -1 0 613 Nc6 Nf3 Nf6 Nc3
这些行流到我的服务器.在客户端,我发出AI行,它显示给客户端(现在)作为ul,如下所示:
4 -1 0 613 Nc6 Nf3 Nf6 Nc3
3 +53 0 155 Nc6 Nc3 Nf6
2 -1 0 47 Nc6 Nc3
1 +53 0 21 Nc6
1 +51 0 8 d5
1 +9 0 4 b5
1 +4 0 2 a5
Thinking...
这是相关的代码:
@main.route('/getpythondata')
def get_python_data():
# gets current proc by finding user's most recent game...
current_game = get_current_game(current_user)
current_proc = get_current_proc(current_game)
line = current_proc.stdout.readline().rstrip()
socketio.emit(
'echo',
{'echo': line})
# for gnu chess
if current_game.ai == "GNU chess":
while ("My move is" not in line):
socketio.emit(
'echo',
{'echo': line})
print "AI thinking: " + line
line = current_proc.stdout.readline().rstrip()
colon_index = line.index(":")
line_length = len(line)
pythondata = line[(colon_index + 2):(line_length)]
current_game.cpu_moves.append(pythondata)
return json.dumps(pythondata)
这里的问题是所有socketio.emit事件在烧瓶路径返回后作为一大块文本传来.也许他们被困在缓冲区?有没有办法冲洗它们?
“打印”AI思维:“行代码向服务器传输多行文本,一次一行,就像AI输出它们一样.但是,socketio.emit代码都会立即传递给客户端,而不是逐行流出.
有任何想法吗?
解决方法:
在socketio.emit()语句后使用eventlet.sleep(0).
当然你必须导入eventlet.
资料来源:https://github.com/miguelgrinberg/Flask-SocketIO/issues/141
内容总结
以上是互联网集市为您收集整理的python – flask和flask-socketio刷新所有发出的事件全部内容,希望文章能够帮你解决python – flask和flask-socketio刷新所有发出的事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。