From 21c2146be451a623012ca561c8322f970e7eeb4a Mon Sep 17 00:00:00 2001 From: Johannes Gorset Date: Thu, 8 Mar 2012 12:38:00 +0100 Subject: [PATCH] Facilitate proxy configuration by environment variables --- docs/user/advanced.rst | 27 +++++++++++++++++++++++++++ requests/models.py | 8 ++++++++ 2 files changed, 35 insertions(+) diff --git a/docs/user/advanced.rst b/docs/user/advanced.rst index aec9cac..7c14ba1 100644 --- a/docs/user/advanced.rst +++ b/docs/user/advanced.rst @@ -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 + +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") diff --git a/requests/models.py b/requests/models.py index 1b143b0..795c115 100644 --- a/requests/models.py +++ b/requests/models.py @@ -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) -- 2.34.1