目标:
当前的:
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)
从上面,我在客户端连接到服务器之后仅添加了一个线程。我不知道如何从这一点达到第二点?我正在考虑使用另一个线程,但是在组织代码时遇到问题,以便一旦客户端连接到服务器,
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)
如果您需要同步这两个线程,例如,当
my_other_thread
具有要发送的新值时,background_thread
立即将其拾取并发送,然后可以使用标准线程同步原语。在这种情况下,可能需要一个Event
实例。请参阅标准库中的Python线程文档。关于如何允许多个客户端连接,您无需为此做任何事情。您拥有的服务器将允许来自多个客户端的连接。