У нас есть два задания cron, которые попадают в два разных динамических бэкэнда, и оба имеют такую же проблему. Я могу дублировать проблему, перейдя по URL-адресам, которые выполняются заданиями cron непосредственно в браузере.AppEngine backends return 503 - Java
Наше приложение имеет довольно холодное время начала. Когда я перейти к URL-адресу, который использует движки, я вижу следующую ошибку
Error: Server Error
The service you requested is not available yet.
Please try again in 30 seconds.
В журналах, я вижу запрос/_ah/старт (мы не имеем конкретный обработчик для этого) для внутреннего интерфейса с этим сообщением:
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.
Затем я обновил URL-адрес бэкэнд и работал нормально.
Итак, моя теория заключается в том, что работа cron будет работать нормально, если бэкэнд уже загружен. Если это не так, он не ждет достаточно долго, чтобы проверить, будет ли бэкэнд загружаться.
Предполагая, что это правильно, есть ли способ заставить работу cron ждать до завершения/_ah/start?
Два других варианта - использовать резидентный экземпляр, который мы бы предпочли не делать, или улучшить время холодного запуска, которое находится в списке задач, но до сих пор не было проблемой для нас (мы используем резидентный экземпляр экземпляр для интерфейса).
Бэкэнд - это B1. Предположим, мы могли бы модернизировать это, но опять же, будучи запутанным с наличными деньгами, я бы предпочел.
В итоге я сделал то, что вы описали в первом абзаце, и это сработало. Если он начнет действовать, мы поговорим о том, как сделать вызов cron более надежным. –