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.JdbcOdbc...