Я использую функцию urlfetch движка приложения Google для удаленного входа в другой веб-сервис. На разработке все работает нормально, но когда я перехожу на работу, процедура входа не проходит. Есть ли у вас какие-либо предложения о том, как отладить производственную выборку URL?
Я использую файлы cookie и другие заголовки в своей выборке URL (я вручную настраивал файлы cookie в заголовке). Один из файлов cookie является файлом cookie сеанса.
Нет ошибок или исключений. В производственном процессе отправка имени входа в команду URL возвращает файлы cookie сеанса, но когда вы запрашиваете страницу, используя файлы cookie сеанса, они игнорируются, и вам снова предлагается ввести информацию для входа. В процессе разработки, как только вы получите сеансовые куки, вы можете легко получить доступ к внутренним страницам. Я думал, что проблема была связана с сохранением куки, но они выглядят правильно, так как запросы почти идентичны.
Вот как я это называю:
fetchresp = urlfetch.fetch(url=req.get_full_url(),
payload=req.get_data(),
method=method,
headers=all_headers,
allow_truncated=False,
follow_redirects=False,
deadline=10
)
Вот некоторые предположения относительно проблемы:
- Распределенная природа реализации извлечения URL-адресов в Google приводит к путанице.
- На производстве заголовки отправляются в другом порядке, чем в разработке, что может сбить с толку сервер.
- Некоторые серверы Google включены в черный список целевым сервером.
Вот некоторая гипотеза, которую я исключил:
- Кэширование в Google слишком агрессивно. Но я все еще получаю проблему после отключения кеша с помощью заголовка Cache-Control: no-store.
- Google urlfetch слишком быстр для целевого сервера. Но я все еще получаю проблему после вставки задержек между вызовами.
- Google добавляет некоторые данные в заголовок User-Agent. Но я добавил этот заголовок в разработку, и у меня не возникает проблемы.
Какие еще различия существуют между производственной выборкой URL-адреса и выборкой URL-адреса разработки? У вас есть идеи для отладки этого?
ОБНОВЛЕНИЕ 2
(первое обновление было включено выше)
Я не знаю, было ли это чем-то, что я делал (возможно, добавлял задержки или отключал кэши, упомянутые выше), но теперь производственная среда работает примерно в 50% случаев. Это определенно похоже на состояние гонки. К сожалению, я понятия не имею, кроется ли проблема в моем коде, коде Google или коде целевого сервера.