假设我想做一个简单的循环,我会花一些时间来执行它。
for i in range(0, 100000000000):
print i
现在,这是我的瓶子代码。我希望在循环结束之前打印出所有中间输出,如1,2,3,4 ....
import bottle
@bottle.route('/')
def home_page():
total = 0
for i in range(0, 100000000000):
total = i + 0
print i
return bottle.template('hello.tpl', {"total": total})
如何在迭代期间输出i?我尝试了“响应”,但它没有用,它仍然必须返回。
答案 0 :(得分:0)
在迭代期间,您无法将i输出到html。您可以做的是将项目列表返回到模板并在返回HTTP响应之前呈现它们,如@Baterson建议的那样。
如果您需要调试应用程序,请考虑使用python debugger。 此外,在项目中设置python logging可以简化项目的错误跟踪。
在上面的代码段中,print
会在您的控制台中显示数据(您已经在其中运行了Web服务器,因此如果您需要检查i
切换到控制台的值是什么,看看会发生什么在那里)。
对您的一个小建议是熟悉MVC Design Paradigm,在阅读和理解之后,您可以更轻松地使用{{ 1}}。
答案 1 :(得分:0)
我想你在问一个长期的民意调查。使用Greenlets时的瓶子docs mention this。以下是这里的例子:
from gevent import monkey; monkey.patch_all()
from time import sleep
from bottle import route, run
@route('/stream')
def stream():
yield 'START'
sleep(3)
yield 'MIDDLE'
sleep(5)
yield 'END'
run(host='0.0.0.0', port=8080, server='gevent')
还有一些other SO questions讨论这个问题。
祝你好运!