我想就如何将以下功能转换为异步功能发表您的看法。
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个货币代码并将价格转换为所选货币。问题是,当您循环使用此功能时,每次迭代都要花一些时间向Web主机发送请求/从Web主机接收请求(20个请求大约需要2-3秒)
此功能在DJANGO的以下VIEW中使用:
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)
是否有机会以某种方式将此功能转换为异步功能?
谢谢
答案 0 :(得分:0)
最后,我决定计算1次汇率,然后用它来转换其余价格。不过还是很慢。
def get_context_data(self, **kwargs):
context = DetailView.get_context_data(self, **kwargs)
context["blocket"], context['pricelist'] = (spider(self.kwargs.get("name")))
rate = currency_converter(1000)
context["pricelist_euro"] = []
for price in context['pricelist']:
try:
context["pricelist_euro"].append(int(price/rate))
except TypeError:
context["pricelist_euro"].append(None)
return context