Тайм-аут запроса ядра приложения для подписки PubSub Pu sh в Automati c Масштабирование - PullRequest
1 голос
/ 17 января 2020

В App Engine в Automati c при масштабировании python2 максимальный тайм-аут обработчиков запросов составлял 60 с для обычных запросов http и 10 мин для запросов Taskqueue.

Не могу найти информацию о pubsub задания. Получают ли они также 10-минутный тайм-аут, как Taskqueue / cloud-tasks?

Кроме того, похоже, что Google меняет свои документы, и в python3 все запросы будут иметь 10-минутный тайм-аут: https://cloud.google.com/appengine/docs/standard/python3/how-instances-are-managed

Но если вы go в их документах для cron в python3, это говорит: An HTTP request invoked by cron can run for up to 60 seconds https://cloud.google.com/appengine/docs/standard/python3/scheduling-jobs-with-cron-yaml

1 Ответ

1 голос
/ 17 января 2020

Когда вы ссылаетесь на задачу Pub / Sub, я понимаю, что вы имеете в виду, что служба App Engine подписывается на topi c в качестве подписчика Pu sh.

Согласно Cloud Pub / Sub документация. То, что вы бы назвали «очередью», - это, в основном, Pub / Sub, динамически регулирующая частоту запросов pu sh на основе скорости, с которой он получает ответы об успешном выполнении.

С pu sh подписок, Pub / Sub рассматривает ответ об успешном выполнении HTTP как подтверждение работника, получающего сообщение. Однако вы должны иметь в виду, что срок предоставления этого ответа изначально определяется ackDeadline подписки, которая по умолчанию составляет 10 секунд , как указано в Управление подписками документация.

Согласно документации Получение pu sh сообщений , если подписчик App Engine не отвечает с успешным кодом состояния HTTP в ackDeadline, Pub / Sub будет повторять доставку до истечения срока действия сообщения по истечении срока хранения сообщения подписки.

Удобно, вы можете установить ackDeadline для подписки pu sh максимально до 10 минут , делая это та же продолжительность, что и Python3 Стандарт App Engine со сроком автоматического масштабирования.

Что касается вашего вопроса о разнице в запросах, запускаемых cron, то это действительно так, как это было задумано, но я бы не смог сказать вам, почему это так.

Кроме того, для получения дополнительной информации о При выборе между Pub / Sub и Cloud Tasks вы можете обратиться к официальным документам. Как ни странно, оба документа Cloud Task и Pub / Sub содержат немного другую страницу, в которой говорится о различиях между 2.

EDIT:

Я решил проверить срок ожидания приложений Python2 и подтвердил, что ограничение действительно присутствует даже при получении запросов от подписки Pub / Sub pu sh.

Я создал 3 базовых c обработчика задач, которые ждали 80, 120 и 610 секунд, чтобы отправить ответ 200 http соответственно. При публикации в topi c я заметил следующее:

  • Как и ожидалось, службе, ожидающей более 10 минут, не удалось подтвердить все запросы.
  • Служба ожидает 120-е были успешными в нескольких запросах, но потерпели неудачу в большинстве из них.
  • Как ни странно, служба, ожидающая 80-е годы, успешно подтвердила все запросы.

Это заставляет меня поверить в крайний срок для Python2 не такой жесткий предел, как сказано в документации. Тем не менее, я по-прежнему считаю, что при разработке приложений идеально помнить о заданных сроках и помнить, что даже для задач Pub / Sub он будет несколько применяться.

Поскольку среда выполнения, скорее всего, будет в ближайшее время устареть, я не думаю, что какие-либо изменения в документации, указывающие крайний срок для задач Pub / Sub, будут утверждены вовремя, так как с Python3 нет никакого риска, что App Engine завершит запрос перед сконфигурированным ackDeadline.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...