ОБНОВЛЕНИЕ. Пожалуйста, если кто-то может помочь: Google ждет ввода и примеры этой проблемы в своем инструменте отслеживания ошибок. Если у вас есть воспроизводимые шаги для этой проблемы, поделитесь ими: https://code.google.com/p/googleappengine/issues/detail?id=10937
Я пытаюсь извлечь данные из API StackExchange с помощью бэкэнда Google App Engine. Как вы, возможно, знаете, некоторые из API-интерфейсов StackExchange зависят от сайта, требуя от разработчиков запускать запросы на каждом сайте, на котором зарегистрирован пользователь.
Итак, вот мой внутренний код для получения данных временной шкалы с этих сайтов. Переменная feed_info_site
содержит имя сайта StackExchange (например, 'security'
, 'serverfault'
и т.д.).
data = json.loads(urllib.urlopen("%sme/timeline?%s" %
(self.API_BASE_URL, urllib.urlencode({"pagesize": 100,
"fromdate": se_since_timestamp, "filter": "!9WWBR
(nmw", "site": feed_info_site, "access_token":
decrypt(self.API_ACCESS_TOKEN_SECRET, self.access_token), "key":
self.API_APP_KEY}))).read())
for item in data['items']:
... # code for parsing timeline items
При выполнении этого запроса на всех сайтах, кроме Stack Overflow, все работает нормально. Что странно, когда для переменной feed_info_site
установлено значение 'stackoverflow'
, я получаю следующую ошибку от Google App Engine:
HTTPException: Invalid and/or missing SSL certificate for URL:
https://api.stackexchange.com/2.2/me/timeline?
filter=%219WWBR%28nmw&access_token=
<ACCESS_TOKEN_REMOVED>&fromdate=1&pagesize=100&key=
<API_KEY_REMOVED>&site=stackoverflow
Конечно, если я запускаю тот же запрос в Safari, я получаю результаты JSON, ожидаемые от API. Таким образом, проблема действительно связана с сервисом Google URLfetch. Я нашел несколько тем в разделе "Переполнение стека", связанных с аналогичными исключениями HTTPS/SSL, но принятый ответ не разрешил мои проблемы. Я попытался удалить файлы cacerts.txt
. Я также попытался сделать вызов с помощью validate_certificate=False
без каких-либо успехов.
Я думаю, что проблема не связана строго с HTTPS/SSL. Если да, как вы объясните, что изменение одного параметра API приведет к сбою запроса?