Python 如何将多线程数据流推送到WebSocket?

Python 如何将多线程数据流推送到WebSocket?,python,multithreading,websocket,Python,Multithreading,Websocket,我们正在构建一个(近)实时遥测系统,其中分布式系统收集传感器数据,并主要通过裸UDP推送到(资源充足的)后端服务器。后端执行一系列操作,包括过滤、合成、计算、分析等,以得出系统当前状态(和状态历史)的最佳估计。我们有很多python线程来处理传入的传感器数据,还有一些hendeling的东西,比如解码、处理和记录(到文件进行离线分析和回放) 我们正在为此系统构建一个基于web的(仅显示)UI。后端系统正在为前端生成准备好的json状态消息,并且可以同时将其推出裸TCP套接字到多个客户端。请参见下

我们正在构建一个(近)实时遥测系统,其中分布式系统收集传感器数据,并主要通过裸UDP推送到(资源充足的)后端服务器。后端执行一系列操作,包括过滤、合成、计算、分析等,以得出系统当前状态(和状态历史)的最佳估计。我们有很多python线程来处理传入的传感器数据,还有一些hendeling的东西,比如解码、处理和记录(到文件进行离线分析和回放)

我们正在为此系统构建一个基于web的(仅显示)UI。后端系统正在为前端生成准备好的json状态消息,并且可以同时将其推出裸TCP套接字到多个客户端。请参见下文注意,不同的子系统将运行不同的服务器和客户机池线程,以推送不同的(但“synchronizedish”)状态消息

我们很难将现有的PythonWebSocket基础架构集成到现有的模块化多线程后端(部分原因是该团队几乎没有PythonAsyncio经验)

我们正在寻找关于如何解决这个问题的例子和建议

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框架。