打印到HTML而不“返回”

时间:2016-01-08 08:34:40

标签: python bottle

假设我想做一个简单的循环,我会花一些时间来执行它。

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?我尝试了“响应”,但它没有用,它仍然必须返回。

2 个答案:

答案 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讨论这个问题。

祝你好运!