Python 如何将多线程数据流推送到WebSocket?
我们正在构建一个(近)实时遥测系统,其中分布式系统收集传感器数据,并主要通过裸UDP推送到(资源充足的)后端服务器。后端执行一系列操作,包括过滤、合成、计算、分析等,以得出系统当前状态(和状态历史)的最佳估计。我们有很多python线程来处理传入的传感器数据,还有一些hendeling的东西,比如解码、处理和记录(到文件进行离线分析和回放) 我们正在为此系统构建一个基于web的(仅显示)UI。后端系统正在为前端生成准备好的json状态消息,并且可以同时将其推出裸TCP套接字到多个客户端。请参见下文注意,不同的子系统将运行不同的服务器和客户机池线程,以推送不同的(但“synchronizedish”)状态消息 我们很难将现有的PythonWebSocket基础架构集成到现有的模块化多线程后端(部分原因是该团队几乎没有PythonAsyncio经验) 我们正在寻找关于如何解决这个问题的例子和建议Python 如何将多线程数据流推送到WebSocket?,python,multithreading,websocket,Python,Multithreading,Websocket,我们正在构建一个(近)实时遥测系统,其中分布式系统收集传感器数据,并主要通过裸UDP推送到(资源充足的)后端服务器。后端执行一系列操作,包括过滤、合成、计算、分析等,以得出系统当前状态(和状态历史)的最佳估计。我们有很多python线程来处理传入的传感器数据,还有一些hendeling的东西,比如解码、处理和记录(到文件进行离线分析和回放) 我们正在为此系统构建一个基于web的(仅显示)UI。后端系统正在为前端生成准备好的json状态消息,并且可以同时将其推出裸TCP套接字到多个客户端。请参见下
def server_listen(self):
"""
todo provide better DocComments
"""
logger.debug("server is listening.")
while self.ServerRunning.isSet():
# accept connections from outside
(client_socket, address) = self._out_socket.accept()
ct = threading.Thread(target=self.do_client,
args=[client_socket])
ct.start()
self.ClientThreads.append(ct)
self.clear_finished_threads()
logger.debug("server is exiting.")
def do_client(self, client_socket):
"""
todo provide better DocComments
:type client_socket: socket.socket
"""
peer_name = client_socket.getpeername()
logger.debug(f'Started client thread for {peer_name}')
packet_num = 0
try:
while self.ServerRunning.isSet():
packet = self.GetState() # GetState() is thread safe
client_socket.send(packet.encode())
client_socket.send('\r\n'.encode())
# client_socket.send(f'{{"packet_num" : '
# f'{packet_num}}}'.encode())
logger.debug(f'sent packet_num: {packet_num}')
packet_num = packet_num + 1
except socket.error as err:
logger.info(f'Socket Error, {type(err)}: ')
client_socket.shutdown(socket.SHUT_RDWR)
client_socket.close()
logger.debug(f'closed socket to {peer_name}')
找到了一些我开始工作的握手程序的代码。谢谢,但我想我仍然需要代码来组成WebSocket框架。