Многократный возврат по HTTP-запросу в Firebase / Google Cloud Function - PullRequest
2 голосов
/ 31 мая 2019

У меня есть облачная функция, которая выполняет поиск в моей базе данных. Это довольно дорогой процесс, требующий большого количества вычислений. Его цель - найти наилучшее из возможных совпадений. У меня нет способа сделать ранний выход, когда найдено хорошее совпадение, потому что лучшее может быть найдено позже в цикле итерации. Поэтому в идеале я хочу регулярно информировать клиента о лучших матчах. Проблема в облачной функции HTTP, которую я могу вернуть только один раз. Я думал об обновлении результатов в базе данных где-нибудь и чтобы клиент прослушивал изменения, однако, это может быть не намного быстрее, поскольку в этом процессе также будет некоторая задержка. Так есть ли способ возврата нескольких ответов на HTTP-запрос в облачной функции? Есть ли лучшее решение для этого я не вижу?

Псевдо того, что мне нужно

def cloudFunction(someData):
    goodMatches = []
    for i in database:
        if (i == goodMatch):
            goodMatches.append(goodMatch)
            post new goodMatch to client
    return goodMatches

1 Ответ

4 голосов
/ 31 мая 2019

Функция типа HTTP может иметь только один ответ, и она будет отправлена ​​целиком. Облачные функции не поддерживают HTTP-чанкинг или потоковую передачу результатов. Если вы хотите отправлять прогрессивные результаты, попробуйте записать их в Cloud Firestore или Realtime Database в уникальном месте, согласованном между клиентом и функцией.

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