Я учусь работать с 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!).Однако реальное поведение, которое я вижу, отличается от этого.
Может кто-нибудь объяснить, пожалуйста.