Django - Асинхронные представления (api запросы) и AJAX
Я использовал этот код здесь, чтобы ускорить api ответ IEX. iex_var2 и iex_var1 и результат импортируются. У меня также есть форма для пользователя, где он ищет тикер (input_ticker) Ответ работает отлично и очень быстро.
async def api_test2(request):
start_time = time.time()
async with aiohttp.ClientSession() as session:
input_ticker = request.POST['ticker']
for i in iex_var2:
var2 = i
url = f"{iex_var1}{input_ticker}{var2}"
async with session.get(url) as res:
url = await res.json()
result.append(url)
total = time.time() - start_time
print(total)
return HttpResponse(result)
Теперь у меня есть два важных вопроса о моем коде.
Как мне избежать того, что при каждой перезагрузке код запускается снова? Когда я перезагружаю HttpResponse, представление запускается снова, и так далее в "result" дублируются данные. Могу ли я использовать здесь Cache? Я все еще новичок, возможно, я что-то путаю?
- Мой вопрос №2 - как вывести этот результат в шаблон? Render не работает вместе с async view, поэтому я думаю, что AJAX - это решение, но у меня нет опыта работы ни с JS, ни с AJAX. Поэтому я не уверен, как я могу связать "результат" моего представления с шаблоном. Я также пытался использовать async_to_sync, но этот подход не сработал, потому что я не смог передать "результат" в функцию синхронизации
.
Я очень благодарен за любую помощь. Даже за совет в случае api запросов и стоит ли мне вообще использовать эти async представления вместо Threadpool или чего-то синхронного