微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Flask Sijax Comet 无法始终如一地工作

如何解决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;">
            &nbsp;
        </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('&nbsp;');
        
        //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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?