我有一个使用 apache 的本地开发 django 设置。问题是,在部署服务器上没有代理,而在我的工作场所,我在 http 代理后面工作,因此请求调用失败。
有没有什么方法可以使请求库中的所有调用都通过代理进行。 [我知道如何使用代理参数向各个调用添加代理,但是有全局解决方案吗? ]
在您的 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"))
附: - 您应该查看以下链接
- 环境变量的 Python 官方文档
- 在哪里以及如何使用 mod-wsgi 和 django 设置环境变量?
- Python 环境变量
UPDATE 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"] = {}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)