如何解决Python Flask Sijax Comet 无法始终如一地工作
我有一个 Sjax 彗星呼叫,但它无法始终如一地工作。当它正常工作时,所有回调和数据都会正常刷新,但突然它会停止发出请求(即 g.sijax.is_sijax_request 将为 false)。我无法找出间歇性工作的原因。 有几次我尝试在页面上添加警报并再次触发 Sijax 调用,然后在运行几次后,sijax 停止工作。一旦我尝试安装 Flask-Sijax 模块,它就可以运行几次。但现在我正在尝试所有这些但没有触发 Sijax。
这里是彗星.html
<html>
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="/static/js/sijax/sijax.js"></script>
<script type="text/javascript" src="/static/js/sijax/sijax_comet.js"></script>
<script type="text/javascript">
{{ g.sijax.get_js()|safe }}
</script>
</head>
<body>
<div id="progressWrapper" style="height: 22px; width: 400px; border: 1px solid #e0e0e0; margin-bottom: 10px;">
<div id="progress" style="width: 0px; height: 100%; background-color: #72cd52; display: block;">
</div>
<div class="processing" id ="processing" ></div>
</div>
<br>
<button id="btnStart" onclick="callSijax();">Start</button>
<script type="text/javascript">
//$('#btnStart').bind('click',function () {
function callSijax() {
$('#progress').css('width',0).html(' ');
//sleep time is 500ms
//alert("calling sjxComet Request");
sjxComet.request('do_work',[0.5]);
}
</script>
</body>
</html>
这里是comet.py
# -*- coding: utf-8 -*-
import os,sys
path = os.path.join('.',os.path.dirname(__file__),'../')
sys.path.append(path)
from flask import Flask,g,render_template
import flask_sijax
app = Flask(__name__)
app.config["SIJAX_STATIC_PATH"] = os.path.join('.','static/js/sijax/')
app.config["SIJAX_JSON_URI"] = '/static/js/sijax/json2.js'
flask_sijax.Sijax(app)
def comet_do_work_handler(obj_response,sleep_time):
for i in range(6):
width = '%spx' % (i * 80)
counter = '%s %% Complete' % (i * 10)
obj_response.css('#progress','width',width)
obj_response.html('#progress',width)
obj_response.html('#processing',counter)
yield obj_response
if i != 5:
time.sleep(sleep_time)
@flask_sijax.route(app,"/")
def index():
if g.sijax.is_sijax_request:
# The request looks like a valid Sijax request
# Let's register the handlers and tell Sijax to process it
print("calling comet")
g.sijax.register_comet_callback('do_work',comet_do_work_handler)
return g.sijax.process_request()
return render_template('comet.html')
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8050,debug=True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。