【问题标题】:Working with django : Proxy setup使用 django:代理设置
【发布时间】:2012-12-26 10:16:50
【问题描述】:

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

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

【问题讨论】:

    标签: django proxy


    【解决方案1】:

    AmrFouad 报告了同样的错误。最后,它通过更新 wsgi.py 修复如下:

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

    【讨论】:

      【解决方案2】:

      在您的 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"))
      

      附: - 你应该看看下面的链接

      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

      更新 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"] = {}
      

      【讨论】:

      • 正是我想要的:)
      • 代理服务器一直是 IIT 程序员的难题!
      • 如果我想为代理添加身份验证详细信息(用户名和密码)怎么办??
      • 您需要指定代理,例如 - http_proxy = "http://username:password@proxy_ip_address_or_domain_name:proxy_port"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 2015-07-20
      • 2016-08-09
      • 2019-04-18
      • 1970-01-01
      • 2015-07-09
      相关资源
      最近更新 更多