Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将我的Python Flask应用程序配置为每30秒调用一个函数_Python 3.x_Flask_Apscheduler - Fatal编程技术网

Python 3.x 将我的Python Flask应用程序配置为每30秒调用一个函数

Python 3.x 将我的Python Flask应用程序配置为每30秒调用一个函数,python-3.x,flask,apscheduler,Python 3.x,Flask,Apscheduler,我有一个flask应用程序,它返回JSON响应。但是,我希望它每30秒调用一次该函数,而无需单击浏览器上的刷新按钮。这就是我所做的 使用apscheduler 。此代码位于application.py中 from apscheduler.schedulers.background import BachgroundScheduler def create_app(config_filname): con = redis.StrictRedis(host= "localhost",

我有一个flask应用程序,它返回JSON响应。但是,我希望它每30秒调用一次该函数,而无需单击浏览器上的刷新按钮。这就是我所做的

使用apscheduler

。此代码位于application.py中

from apscheduler.schedulers.background import BachgroundScheduler

def create_app(config_filname):  
    con = redis.StrictRedis(host= "localhost", port=6379, charset ="utf-8", decode_responses=True, db=0)
    application = Flask(__name__)
    CORS(application)
    sched = BackgroundScheduler()

    @application.route('/users')
    @cross_origin()
    @sched.scheduled_job('interval', seconds = 20)
    def get_users():
        //Some code...
        return jsonify(users)
    sched.start()
    return application
然后在我的wsgi.py中

from application import create_app
application = create_app('application.cfg')

with application.app_context():
    if __name__ == "__main__":   
        application.run()
当我运行这个appliaction时,我得到了json输出,但它在抛出20秒后不会刷新

运行时错误:在应用程序上下文之外工作。 这通常意味着您试图使用所需的功能 以某种方式与当前应用程序对象接口。解决 为此,请使用app.app_context()设置应用程序上下文。见 有关更多信息,请参阅文档


我做错了什么?如果有任何建议,我将不胜感激。

如果这在某种程度上颠覆了问题,我将表示歉意,但是如果您希望每30秒发送一次用户,那么这应该而不是在后端完成。后端应仅在发出请求时发送数据。为了定期发送数据,需要将前端配置为定期发出请求

就我个人而言,我建议结合使用I-frames和javascript来实现这一点,如堆栈溢出问题中所述:

最后,当涉及到实际代码时,这里似乎有一个错误:

if __name__ == "__main__":   
application.run()

“application.run()”行应该缩进,因为它位于if语句中

感谢您指出这一点。我在这页上打字时出错了。