Facilitate proxy configuration by environment variables

This commit is contained in:
Johannes Gorset
2012-03-08 12:38:00 +01:00
parent 2f91d8e773
commit 21c2146be4
2 changed files with 35 additions and 0 deletions
+27
View File
@@ -291,3 +291,30 @@ To do so, just configure Requests with a stream to write to::
>>> requests.get('http://httpbin.org/headers', config=my_config)
2011-08-17T03:04:23.380175 GET http://httpbin.org/headers
<Response [200]>
Proxies
-------
If you need to use a proxy, you can configure individual requests with the
``proxies`` argument to any request method:
::
import requests
proxies = {
"http": "10.10.1.10:3128"
"https": "10.10.1.10:1080"
}
requests.get("http://example.org", proxies=proxies)
You can also configure proxies by environment variables ``HTTP_PROXY`` and ``HTTPS_PROXY``.
::
$ export HTTP_PROXY="10.10.1.10:3128"
$ export HTTPS_PROXY="10.10.1.10:1080"
$ python
>>> import requests
>>> requests.get("http://example.org")
+8
View File
@@ -102,6 +102,14 @@ class Request(object):
# Dictionary mapping protocol to the URL of the proxy (e.g. {'http': 'foo.bar:3128'})
self.proxies = dict(proxies or [])
# If no proxies are given, allow configuration by environment variables
# HTTP_PROXY and HTTPS_PROXY.
if not self.proxies:
if 'HTTP_PROXY' in os.environ:
self.proxies['http'] = os.environ['HTTP_PROXY']
if 'HTTPS_PROXY' in os.environ:
self.proxies['https'] = os.environ['HTTPS_PROXY']
self.data, self._enc_data = self._encode_params(data)
self.params, self._enc_params = self._encode_params(params)