Облачная функция Google: поведение при достижении --max-экземпляров - PullRequest
1 голос
/ 28 сентября 2019

Я учусь работать с Cloud Functions (и Cloud Run) и хотел бы знать, каково это поведение, когда (сработала HTTP) функция уже работает с максимальным объемом экземпляров и поступает больше запросов HTTP

1) Вот базовый код моей функции (простая функция с временем выполнения приблизительно 1000 мс на вызов):

ctr = 0
def hello_world(request):
    global ctr
    print("hello_world(): "+str(ctr))
    ctr=ctr+1
    time.sleep(10)
    response = flask.Response("success::", 200)
    return response

2) развернула эту функцию с флагом --max-instances=1 (просто для того, чтобы не обрабатывать новые экземпляры виртуальной машины.одновременных запросов)

3) и затем отправить 5 одновременных результатов

Из того, что я наблюдаю, обрабатывается только один из запросов.Остальные 4 запроса только что отброшены (клиент получил HTTP-код состояния 500, и трассировка этих пропущенных запросов в журнале Stackdriver также отсутствует)

В ссылке здесь https://cloud.google.com/functions/docs/max-instances указано:

В этом случае входящие запросы помещаются в очередь на срок до 60 секунд.В течение этого 60-секундного окна, если экземпляр заканчивает обработку запроса, он становится доступным для обработки запросов в очереди.Если в течение 60-секундного окна не будет доступно ни одного экземпляра, запрос завершится неудачей.

Исходя из того, что я ожидал, что при обработке одного запроса другие будут помещены в очередь максимум на 60 секунд.Следовательно, все 5 запросов должны были быть обработаны (или, по крайней мере,> 1 запросов, если не все 5!).Однако реальное поведение, которое я вижу, отличается от этого.

Может кто-нибудь объяснить, пожалуйста.

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