Увеличение времени ожидания до 504 с использованием запросов Python
Я использую модуль запросов для запроса относительно большой базы данных PostgRES (~14 ГБ), доступной через API PostgREST, размещенной на простом сервере, настроенном партнером.
Когда я делаю простые вызовы API, такие как
requests.get('https://api.nycdb.info/real_property_legals?bbl=eq.4043210050')
Я получаю ответ 200, и все работает отлично. Однако, когда я выполняю более интенсивные вычисления (например, поиск текста), я получаю 504 ответа в подавляющем большинстве случаев.
Это пример вызова API, который почти всегда возвращает 504 тайм-аута:
requests.get('https://api.nycdb.info/real_property_parties?address1=@@."MADISON"')
Я подозреваю, что это потому, что сервер не отвечает достаточно быстро, из-за его простой вычислительной мощности и размера базы данных. Но я обращаюсь к сообществу за помощью здесь.
Есть ли способ увеличить время ожидания ответа до получения ответа 504? Что еще я могу сделать, чтобы повысить надежность более сложных запросов?
2 ответа
Вы можете добавить, тайм-аут = где секунд это число с плавающей точкой. (Для получения информации о доступных опциях, которые могут быть предоставлены непосредственно в pydoc.get(), см. Pydoc reports.request). Также могут быть ограничения на стороне сервера API в быстром случае, если вам может понадобиться разбить ваш запрос на куски по размеру.
Если вы прочтете документы для запросов, вы увидите, что по умолчанию ни один из запросов.
Кроме того, ошибка 504 - это ошибка сервера шлюза.
Итак, на самом деле происходит то, что ваш сервер PostGREST перестал взаимодействовать с вашим сервером postgres.
Вы не можете остановить это, изменив свой запрос request.get, вместо этого вы должны перенастроить один или оба сервера.
(Другими словами, это не проблема с питоном или запросами)