Как заставить cloudant выбрать файл.pac?
В моем приложении 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.
Спасибо за ваши идеи и помощь заранее.
1 ответ
Решение
Начиная с 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