Мне бы хотелось узнать ваше мнение о том, как преобразовать следующую функцию в асинхронную.
def currency_converter(price, curr1="SEK", curr2="EUR"):
c = CurrencyConverter()
try:
return c.convert(price, curr1, curr2)
except ValueError or RateNotFoundError as err:
return str(err)
Эта функция принимает цену, коды 2 валют и конвертирует цену в выбранную валюту. Проблема в том, что когда вы используете эту функцию в цикле, отправка и получение запросов на / с веб-хоста для каждой итерации занимает некоторое время (около 2-3 секунд для 20 запросов)
Эта функция используется при следующем просмотре в DJANGO:
class BlocketView(DetailView):
model = BoatModel
template_name = 'blocket.html'
def get_context_data(self, **kwargs):
context = DetailView.get_context_data(self, **kwargs)
context["blocket"], context['pricelist'] = (spider(self.kwargs.get("name")))
context["pricelist_euro"] = [currency_converter(price) for price in context['pricelist']]
return context
Здесь он получает цены из прайс-листа и создает новый контекстный [[pricelist_euro »] список с конвертированными ценами.
Также эту функцию можно использовать как шаблонный фильтр:
@register.filter
def currency_converter(price, curr1="SEK", curr2="EUR"):
c = CurrencyConverter()
try:
return c.convert(price, curr1, curr2)
except ValueError or RateNotFoundError as err:
return str(err)
Есть ли шанс как-то преобразовать эту функцию в асинхронную?
Спасибо