Python 3 Обработка сокетов больших размеров

Рейтинг: 0Ответов: 1Опубликовано: 04.07.2023

Взял прокси сервер от сюда отсюда. Он работает, но есть проблема: когда к нему приходит длинный json, он принимает его частями и, соответственно, отправляет дальше по частям, что приводит к неверному чтению json на другом конце.

Нашёл решение, и получилось так:

def main_loop(self):

    self.input_list.append(self.server)

    while 1:
        time.sleep(delay)
        ss = select.select
        inputready, outputready, exceptready = ss(self.input_list, [], [])
        for self.s in inputready:

            if self.s == self.server:
                self.on_accept()
                break
            print(1)
            self.data = self.recvall()
            print(2)
            #self.data = self.s.recv(buffer_size)
            if self.data != None:
                if len(self.data) == 0:
                    self.on_close()
                else:
                    self.on_recv()
            else:
                self.on_close()

  def recvall(self):
    BUFF_SIZE = 4096
    data = bytearray()
    while True:
        packet = self.s.recv(BUFF_SIZE)
        if not packet:
            break
        data.extend(packet)
    return data

Но почему-то поток соединений зависает на первом соединении и дальше ничего не происходит.

Ответы

▲ 0Принят

Забил на это дело и заменил найденый прокси фласком и реквестс.