Как заставить 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
Другие вопросы по тегам