我有一个函数可以获取我使用financial google选择的任何货币的当前价格,我想多线程,以便我可以单独发送任何请求。
这是我的代码:
def currency_converter(amount, currency):
url = 'https://finance.google.com/finance/converter?a={}&from=KGS&to={}&meta=ei%3DmSr0WeHCCYvBsAH8n6OIBA'.format(amount, currency)
urlHandler = urllib2.urlopen(url)
html = urlHandler.read()
bsoup = BeautifulSoup(html, 'lxml')
num = bsoup.find('span').text.split()[0]
return float(num)
@main_route.app_template_filter('currency_converter')
def thread_me(amount, currency):
t = threading.Thread(target=currency_converter, args=[amount, currency])
t.start()
t.join()
return t
以下是我在模板中运行过滤器的方法:
{{ product.price|float|currency_converter('RUB') }} руб
这里我返回t值,我想从api返回数据,请问我该如何完成?
另一个我忘记提及的问题,如果我打开任何产品页面,页面会延迟大约10秒!!
答案 0 :(得分:0)
您应该尝试多处理:
from multiprocessing.pool import ThreadPool
#currency_converter code
@main_route.app_template_filter('currency_converter')
def thread_me(amount, currency):
pool = ThreadPool(processes=1)
result = pool.apply_async(currency_converter, (amount, currency))
return result.get()