Как увеличить таймер запросов Google App Engine. По умолчанию 60 секунд

У меня есть PHP-скрипт, который работает на Google Cloud Engine, который запускает SQL-запрос, и на выполнение этого запроса иногда уходит более 60 секунд.
Если запрос не может быть возвращен в течение 60 секунд и DeadlineExceededError генерируется и не перехватывается, запрос прерывается и возвращается 500 внутренняя ошибка сервера. Следующее упомянуто в документации.

Таймер запросов Google App Engine (Java / Python / Go) гарантирует, что запросы имеют конечную продолжительность жизни и не попадают в бесконечный цикл. В настоящее время крайний срок для запросов к экземплярам веб-интерфейса составляет 60 секунд. (Экземпляры бэкэнда не имеют соответствующего ограничения.) Каждое требование, включая разогрев (запрос к / _ah / warmup) и загрузку (заголовок журнала «loading_request = 1»), подпадает под это ограничение.

Я прошел эта ссылка который объясняет, как избежать такой ошибки, но мой запрос выполняется в тяжелой базе данных, что требует времени для получения всех результатов.

У меня вопрос, как я могу увеличить таймер запроса, чтобы иметь возможность запускать долго выполняющиеся задачи. Если это невозможно, есть ли альтернатива для достижения такой цели.

1

Решение

Если ваш код выполняется внутри обработчика запросов, то по умолчанию существует 60-секундный крайний срок, предписанный App-Engine. Вы не можете это изменить. См. Строку «Сроки» / столбец «Автоматическое масштабирование» диаграммы на этой странице в разделе «Типы масштабирования»:

https://developers.google.com/appengine/docs/java/modules/

Однако этот код сможет работать в течение нескольких часов, если вы измените свой модуль на использование «ручного масштабирования» и экземпляра «B1» — «B4». Пример:

по умолчанию / SRC / главная / веб-приложение / WEB-INF / AppEngine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>myapp</application>
<module>default</module>
<version>1</version>
<threadsafe>true</threadsafe>
<instance-class>B1</instance-class>
<manual-scaling>
<instances>1</instances>
</manual-scaling>
</appengine-web-app>

В этом случае ваши запросы обычно не будут задерживаться на несколько часов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]