Включение вывода отладки для python 3 urllib


В python 2 можно было получить отладочный вывод из urllib, выполнив

import httplib
import urllib
httplib.HTTPConnection.debuglevel = 1
response = urllib.urlopen('http://example.com').read()

Однако в python 3 это выглядит так, как будто это было перемещено в

http.client.HTTPConnection.set_debuglevel(level)

Однако я использую urllib, а не http.клиент напрямую. Как я могу настроить его так, чтобы мой http-запрос отображал отладочную информацию таким образом?

Вот что я использую до сих пор. Как лучше всего поступить, если я хочу получить отладочную информацию?

#Request Login page
cookiejar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
request = urllib.request.Request(options.uri)
add_std_headers(request)
response = opener.open(request)
response_string = response.read().decode("utf8")
# ...
1 15

1 ответ:

Ты был прав в первый раз. Вы можете просто добавить строку http.client.HTTPConnection.debuglevel = 1 в начале файла, чтобы включить отладку HTTP для всего приложения. urllib.request все еще использует http.client.

Кажется, что есть также способ установить уровень отладки для одного обработчика (путем создания urllib.request.HTTPHandler(debuglevel=1) и построения открывателя с этим), но на моей установке Python3 (3.0b3) он фактически не реализован. Я думаю, что это изменилось в более поздних версиях!