Python 2.7 如何每分钟调用一次render_template()
我对烧瓶不熟悉。对于由不断变化的数据提供的给定页面,如何每分钟调用一次呈现模板('prices.html',stock_price) 我试过这个:Python 2.7 如何每分钟调用一次render_template(),python-2.7,flask,Python 2.7,Flask,我对烧瓶不熟悉。对于由不断变化的数据提供的给定页面,如何每分钟调用一次呈现模板('prices.html',stock_price) 我试过这个: throttle.Throttle(period=60) # 60 second throttle while True: stock_price = get_stock_price() render_template('prices.html', stock_price=stock_price) throttle.check()
throttle.Throttle(period=60) # 60 second throttle
while True:
stock_price = get_stock_price()
render_template('prices.html', stock_price=stock_price)
throttle.check() # Check if 60 seconds have passed otherwise sleep
唯一有效的方法是返回渲染模板(…)
。显然,render_template()必须是return语句的一部分。不幸的是,一旦返回被称为游戏结束
我如何做到这一点?我假设这只是我的无知。当你呈现模板时,你运行Flask进程,在呈现模板文件后返回一个HTML,正如你所说,你使用return,游戏就结束了 即使你会找到一种很难编写代码的方法,但这不是一种很好的方法。您将浪费太多的服务器调用和用户等待时间 简单的方法 编写一个非常简单的Python函数,只返回股票编号(我想您已经有了一个-
get\u stock\u price()
)
但我会用一条路线来装饰它(比如“/getprice”)。每一个进入这个页面的人都会得到一个黑色页面,但股票价格文本除外
现在是真正的魔术-在HTML页面上使用JQuery AJAX调用此函数:
$.ajax({
type: "POST",
url: "/getprice",
})
.done(function( price ) {
$("#price-box").val(price)
});
嘿,等等,我的“每分钟一次”怎么样
当然,我们可以将此ajax调用插入到setInerval()
函数中,如下所示:
setInterval(function() {
$.ajax({
type: "POST",
url: "/getprice",
})
.done(function( price ) {
$("#price-box").val(price)
});
}, 1000 * 60);
如果你需要帮忙,告诉我
专业的方法
好的,所以您设法每分钟发送一次对get\u stock\u price()
函数的请求
太好了
但是性能呢
我猜你的get\u stock\u price()
我要做的是:
每分钟将来自get\u stock\u price()
的数据存储在数据库中(将完成此工作),然后当用户请求(AJAX请求)此数据时,将其从数据库中取出
通过这种方式,服务器将在后台工作,用户不会看到其数据加载速度有任何不同。我刚刚发现,可以根据meta标记自动重新加载页面
其中60
是秒数。但是,想想每60秒刷新一次的用户,你会不会疯了?