我有一条路线会进行一些计算,可能需要一些时间才能完成。我试图在路由返回包含结果的模板之前向用户发送有关此计算进度的一些注释。
基本上,我使用gevent在计算达到特定阶段时将文本字符串生成到iframe中。最后,我想将一个Bottle模板生成到iframe中,但同时删除上次生成之前发送的所有字符串。
有人知道如何正确地执行此操作吗?我尝试在生成模板之前通过生成简短的JavaScript document.body.innerHTML=""
来做到这一点,但这是行不通的。
from gevent import monkey; monkey.patch_all()
from time import sleep
from bottle import route, run
@route('/stream')
def stream():
yield 'START'
sleep(3) # some calculation goes here
yield template("send_results")
run(host='0.0.0.0', port=8080, server='gevent')
答案 0 :(得分:0)
产生脚本标签将在打开的窗口中运行脚本。这是它工作的一个例子。也不要使用Bottle的gevent服务器模块,而是使用它。
from gevent import monkey; monkey.patch_all()
from gevent.pywsgi import WSGIServer
from time import sleep
import bottle
from bottle import route, template
@route('/stream')
def stream():
yield '<h3 id="firstid">Starting</h3>'
sleep(3) # some calculation goes here
yield '<script>document.getElementById("firstid").innerHTML = "Hello World";</script>'
botapp = bottle.app()
server = WSGIServer(("0.0.0.0", int(80)), botapp)
server.serve_forever()