Python 3.x 在处理数据时,如何使websocket保持活动状态?

Python 3.x 在处理数据时,如何使websocket保持活动状态?,python-3.x,multithreading,websocket,Python 3.x,Multithreading,Websocket,我正在连接websocket服务器并从中请求数据,我面临的问题如下: websocket服务器每10秒向我发送一条消息,我必须在收到该消息后立即回复 当我处理从服务器接收到的数据时,我需要超过10秒的时间,比方说我需要大约5分钟来处理每个接收到的数据 我有一个循环,循环是这样做的:首先从websocket连接接收数据,然后在本地计算机中处理,这需要时间,发送另一个请求并从websocket连接接收新数据,等等 我想保持websocket连接处于活动状态,但我需要回复服务器的时间间隔约为10秒,这

我正在连接websocket服务器并从中请求数据,我面临的问题如下:

websocket服务器每10秒向我发送一条消息,我必须在收到该消息后立即回复

当我处理从服务器接收到的数据时,我需要超过10秒的时间,比方说我需要大约5分钟来处理每个接收到的数据

我有一个循环,循环是这样做的:首先从websocket连接接收数据,然后在本地计算机中处理,这需要时间,发送另一个请求并从websocket连接接收新数据,等等

我想保持websocket连接处于活动状态,但我需要回复服务器的时间间隔约为10秒,这比我需要处理数据的时间要短得多,我该怎么做

以下psuedo代码解释了上述语句:

import websocket 
import time

ws = websocket.WebSocket() 
ws.connect("wss://example.com")


def keep_alive():
    # this is what I need to interact to keep the connection on
    while True:
        data_recvd = ws.recv()  # suppose the received data is always an integer
        if data_recvd > 1000:
            ws.send(data_recvd)


def process_data(data):
    # suppose the processing takes very long time
    print(data)
    time.sleep(300)
    pass


for i in range(100):
    ws.send("message %d" % i)
    data = ws.recv()
    if data < 1000:
        process_data(data)  # if I write the program like this, the connection will be lost.

我认为您的伪代码比它应该的要复杂一些。我将使用JavaScription编写解决此问题的版本,您必须指定端口

const ws = new WebSocket("wss://example.com:80");
ws.onMessage = function(event){
   ws.send("Hello, server");
   executeAsync(longFunction());       
}
function longFunction(){
//timeout 5 min
}
您所需要做的就是创建一个新的线程运行长函数async。当longFunction完成后,线程关闭并返回无限循环在我的代码片段中,ws.onMessage listen server messages infinite。但一段时间后,您将拥有和服务器发送的消息一样多的线程,所以,在创建线程时要小心