cth*_*954 3 python multithreading flask flask-socketio
目标:
socketio.run(app) 启动服务器并使用 while 循环将数据无限地发送到多个 JavaScript(客户端)。
数据来自另一个 while 循环,但该循环需要在脚本运行后启动(独立于客户端连接)以供其他使用。
当前的:
对于第一点,我已经有以下代码:
def background_thread():
while True:
socketio.emit('response',{'data': value},namespace='/test')
@socketio.on('connect', namespace='/test')
def test_connect():
global thread
with thread_lock:
if thread is None:
thread = socketio.start_background_task(target=background_thread)
emit('response', {'data': 'Connected'})
if __name__ == '__main__':
socketio.run(app, debug=True, host='localhost', port=args.portNum)
Run Code Online (Sandbox Code Playgroud)从上面,我仅在客户端连接到服务器后添加一个线程。我不知道如何从这一点实现第2点?我正在考虑使用另一个线程,但在组织代码时遇到问题,以便在客户端连接到服务器后socketio.start_background_task可以与默认 python 线程无限共享数据。
附加问题:如何让多个客户端连接到一台服务器?
谢谢大家!
我不确定我是否理解你的问题,但如果你问的是如何独立于客户端连接启动线程,你可以在启动服务器之前启动它:
if __name__ == '__main__':
socketio.start_background_task(my_other_thread)
socketio.run(app, debug=True, host='localhost', port=args.portNum)
Run Code Online (Sandbox Code Playgroud)
如果您需要同步这两个线程,例如当my_other_thread有新值要发送时,background_thread立即拾取并发送它,那么您可以使用标准线程同步原语。也许Event在这种情况下您需要一个实例。请参阅标准库中的 Python 线程文档。
至于如何允许多个客户端连接,您无需执行任何操作。您拥有的服务器将允许来自多个客户端的连接。
| 归档时间: |
|
| 查看次数: |
6968 次 |
| 最近记录: |