如何让 cloudant 选择一个 .pac 文件?

how to make cloudant pick a .pac file?

在我的 python (2.7) 应用程序中,我使用 Cloudant 数据库如下:

from cloudant.client import Cloudant

client = Cloudant('XXX', 'YYY', account='ZZZ')
client.connect()
my_db = client['my_database']
for doc in my_db: print doc

此应用程序运行的环境使用了无法绕过的proxy.pac。我怎样才能连接到 Cloudant .pac 感知或者我怎样才能让 Cloudant 自动查找 proxy.pac?

我找到了 python 包 PyPac (https://pypac.readthedocs.io/en/latest/),但完全不知道我应该如何在 Cloudant 上下文中使用它。

提前感谢您的想法和帮助。

从 PyPAC 0.6.0 开始,您可以使用 pac_context_for_url 上下文管理器:

from pypac import pac_context_for_url


with pac_context_for_url('https://acct.cloudant.com'):
    # Do your Cloudant stuff

原回答:

这应该按预期工作:

import os

import pypac


# PyPAC will auto-discover the current PAC settings
pac = pypac.get_pac()

# Find the proxy for Cloudant (I use this domain but anything else would work too)
proxies = pac.find_proxy_for_url('https://acct.cloudant.com', 'cloudant.com')

# It will return something like: 'PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080'
# Here we take the 1st one:
proxy = 'http://{}/'.format(proxies.split()[1].rstrip(';'))

# Set proxy envars
os.environ['HTTP_PROXY'] = os.environ['HTTPS_PROXY'] = proxy

# And now try Cloudant stuff