आपको httplib
स्तर (requests
→ urllib3
→ httplib
पर डिबगिंग सक्षम करने की आवश्यकता है)।
यहाँ दोनों टॉगल (..._on()
और ..._off()
) करने के लिए कुछ कार्यों है या अस्थायी रूप से पर यह है:
import logging
import contextlib
try:
from http.client import HTTPConnection # py3
except ImportError:
from httplib import HTTPConnection # py2
def debug_requests_on():
'''Switches on logging of the requests module.'''
HTTPConnection.debuglevel = 1
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True
def debug_requests_off():
'''Switches off logging of the requests module, might be some side-effects'''
HTTPConnection.debuglevel = 0
root_logger = logging.getLogger()
root_logger.setLevel(logging.WARNING)
root_logger.handlers = []
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.WARNING)
requests_log.propagate = False
@contextlib.contextmanager
def debug_requests():
'''Use with 'with'!'''
debug_requests_on()
yield
debug_requests_off()
डेमो उपयोग:
>>> requests.get('http://httpbin.org/')
<Response [200]>
>>> debug_requests_on()
>>> requests.get('http://httpbin.org/')
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): httpbin.org
DEBUG:requests.packages.urllib3.connectionpool:"GET/HTTP/1.1" 200 12150
send: 'GET/HTTP/1.1\r\nHost: httpbin.org\r\nConnection: keep-alive\r\nAccept-
Encoding: gzip, deflate\r\nAccept: */*\r\nUser-Agent: python-requests/2.11.1\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Server: nginx
...
<Response [200]>
>>> debug_requests_off()
>>> requests.get('http://httpbin.org/')
<Response [200]>
>>> with debug_requests():
... requests.get('http://httpbin.org/')
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): httpbin.org
...
<Response [200]>
आप शीर्ष लेख और डेटा सहित अनुरोध, देखेंगे, और हेडर्स के साथ प्रतिक्रिया लेकिन डेटा के बिना। गायब होने वाली एकमात्र चीज प्रतिक्रिया होगी। कोई भी जो लॉग नहीं है।
Source
प्रतिक्रिया उन लोगों के लिए दिखाता है कि कैसे हेडर आप भेज रहे हैं सहित अभी तक अधिक लॉगिंग उत्पादन, प्राप्त करने के लिए। यह मार्टिजन के बजाए स्वीकार्य उत्तर होना चाहिए, जो हेडर को नहीं दिखाता है कि आप वायरसहार्क के माध्यम से हो रहे हैं और इसके बजाय अनुरोध को अनुकूलित कर रहे हैं। – nealmcb