Я подключаю сервер веб-сокета и запрашиваю у него данные, проблема, с которой я сталкиваюсь, заключается в следующем:
сервер веб-сокета отправляет мне сообщение каждые 10 секунд, и я должен ответитькак только я получу это сообщение.
Когда я обрабатываю полученные данные с сервера, мне требуется гораздо больше 10 секунд, скажем, мне нужно около 5 минут для обработки всех полученных данных.
У меня есть цикл, который делает цикл: сначала получает данные от подключения к веб-сокету, затем обрабатывает на локальных компьютерах (что занимает много времени), отправляет другой запрос и получает новые данные из подключения к веб-сокету и т. Д.вкл.
Я хочу сохранить подключение к веб-сокету, но интервал, на который мне нужно ответить серверу, составляет около 10 с, что намного меньше, чем время, необходимое для обработки данных. Как это сделать?Я делаю?
Следующий псевдо-код объясняет приведенное выше утверждение:
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.