Сокет заблокирован при чтении большой длины содержимого в Python URLLIB2

109
10

Я использую Python для использования веб-службы, которая возвращает ответ JSON. Когда длина ответа ответа не такая большая, все идет отлично. Похоже, что проблема возникает впереди, когда длина ответа ответа чрезвычайно велика.

Это фрагмент моего кода, довольно простой:

response = urllib2.urlopen(request)
content = response.read()
response.close()

Где запрос правильно сформирован urllib2.Request.

Если я печатаю response.info(), это дает мне:

Content-Type: application/json 
Content-Length: 3244749
Connection: close Date: Thu, 05 Jun 2014 20:24:23
GMT Server: EESBServer

Мой скрипт держится вечно в response.read(), как будто сокет заблокирован.

Я искал решение, еще не нашел его.

Я действительно очень благодарен за помощь.

спросил(а) 2021-01-19T16:03:09+03:00 6 месяцев, 2 недели назад
1
Решение
64

потребляйте ответ в кусках, например:

response.read(1024)

ответил(а) 2021-01-19T16:03:09+03:00 6 месяцев, 2 недели назад
45

Я решил проблему. Это был просто параметр сервера, о котором я не знал. Указанный параметр ограничивал количество данных, которые можно было прочитать через соединение.

ответил(а) 2021-01-19T16:03:09+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема