У меня есть сервер Python Flask, клиент Javascript Vue.js.
Сервер является API REST, у него есть длительный (10сек) запрос, который отвечает json в виде:
{
"foo": "bar",
"data": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
Причина, по которой это занимает много времени, заключается в том, что он обращается к сторонней службе для получения данных в массиве.Этот сторонний сервис разбит на страницы, и для возврата каждой страницы требуется около 1 секунды, что позволяет мне получить все 10 частей моего массива данных ответов.Таким образом, потенциально, 1/10 моего массива получается только после 1секундного ожидания.Я хотел бы вернуть его как можно скорее, чтобы клиент мог отобразить первую запись, но оставить соединение открытым и заполнять оставшиеся события по мере их получения, а затем закрывать, когда все будет сделано.
Представьте себев результате получается таблица из 10 строк, например, в момент времени = 1 с я бы показал строку 1, во время = 2 с добавил строку 2 ... и т. д. и т. д.
Возможно, данные будут получены в более поздней частииметь последствия для данных, полученных ранее.Поэтому я хотел бы иметь возможность, например, добавить строку 8 и обновить строку 2 в то же время, когда время = 8 с.
Каковы оптимальные методы разделения такого длительного запроса изс точки зрения сервера и клиента?SSE?WebSocket?Потоковая передача?
Массив не очень длинный с точки зрения байтового размера, это просто проблема времени.
PS: Я хотел бы избежать рефакторинга стороннего запроса, если это возможно (в 10 параллельныхзапросы, например, потому что я не обязательно заранее знаю параметры нумерации страниц)