Одновременный запуск django функций в views.py?, celery с последующим рендерингом текщей страницы?, или поэтапная выдача результата рендеринга юзеру?

в моем views.py есть функция, которая вызывает еще 5 функций. В шаблоне я использую результат основнго запроса и общий результат 5 дополнительных функций. (все дело в том, что я могу отправлять в функцию multi только 20 значений из списка основной функции). Получается я должен 5 раз пройти функцию multi, чтобы собрать весь список final. Итоговое время от запуска и до конца - более 150 секунд. Это очень долго. Мне очень нужна помощь. Первый основной запрос отрабатывает за 5-10 секунд. Первый запрос + первая функция multi отрабатывают за 15-25 секунд. но когда эта компания работает вся вместе(запрос + 5 функций) = 150+ секунд. Я знаю, что это можно решить несколькими методами: меня устроили бы следующие варианты

  • параллельный запуск функций multi c задержкой 1 секунда? (задержка должна быть - это условие сервера, на который я отправляю запрос)

  • показать пользователю страницу (таблица) с результатами listdata, и загрузка в прямом эфире недостающих значений из списка final частично по мере отработка каждой из 5 функций.

  • celery?

  • help please

def index(request):
    def multi(keys):
        response = requests.get(url1+keys)
        data1 = response.json()
        listdata1 = data1['output']
        for i in listdata1:
            final.append(i)
        return final
        
    response = requests.get(url)
    data = response.json()   
    listdata = data['results']

    final = []
    list1 = listdata[0:20]
    list2 = listdata[20:40]
    list3 = listdata[40:60]
    list4 = listdata[60:80]
    list5 = listdata[80:]

    multi(list1)
    multi(list2)
    multi(list3)
    multi(list4)
    multi(list5)

    return render(request, 'index.html',{'final':final, 'listdata':listdata})
    

Ответы (0 шт):