使用django:代理设置

时间:2013-01-11 18:55:06

标签: django proxy

我有一个使用apache的本地开发django设置。问题是在部署服务器上没有代理,而在我的工作场所我在http代理后工作,因此请求调用失败。

有没有办法让来自请求库的所有调用都通过代理进行。 [我知道如何使用proxies参数为各个调用添加代理,但是有全局解决方案吗? ]

2 个答案:

答案 0 :(得分:4)

我得到了AmrFouad报告的相同错误。最后,通过更新wsgi.py来修复它,如下所示:

os.environ['http_proxy'] = "http://proxy.xxx:8080"
os.environ['https_proxy'] = "http://proxy.xxx:8080"

答案 1 :(得分:3)

在wsgi文件中添加以下行。

import os

http_proxy  = "10.10.1.10:3128"
https_proxy = "10.10.1.11:1080"
ftp_proxy   = "10.10.1.10:3128"

proxyDict = { 
              "http"  : http_proxy, 
              "https" : https_proxy, 
              "ftp"   : ftp_proxy
            }

os.environ["PROXIES"] = proxyDict

现在,您可以在任何地方使用此环境变量,

r = requests.get(url, headers=headers, proxies=os.environ.get("PROXIES"))

P.S。 - 您应该看一下以下链接

  1. Official Python Documentation for Environment Variables
  2. Where and how do I set an environmental variable using mod-wsgi and django?
  3. Python ENVIRONMENT variables
  4. 更新1

    您可以执行以下操作,以便仅在localhost上使用代理设置。

    import socket
    if socket.gethostname() == "localhost":
        # do something only on local server, e.g. setting os.environ["PROXIES"]
        os.environ["PROXIES"] = proxyDict
    else:
        # Set os.environ["PROXIES"] to an empty dictionary on other hosts
        os.environ["PROXIES"] = {}