Python 3 Обработка сокетов больших размеров
Взял прокси сервер от сюда отсюда. Он работает, но есть проблема: когда к нему приходит длинный 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
Но почему-то поток соединений зависает на первом соединении и дальше ничего не происходит.
Источник: Stack Overflow на русском