Когда вы ссылаетесь на задачу 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.