首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Python Flask应用程序配置为每30秒调用一次函数

将Python Flask应用程序配置为每30秒调用一次函数
EN

Stack Overflow用户
提问于 2018-08-03 05:04:40
回答 1查看 608关注 0票数 0

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

使用apscheduler的

。这是application.py中的代码

代码语言:javascript
复制
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中

代码语言:javascript
复制
from application import create_app
application = create_app('application.cfg')

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

当我运行这个应用程序时,我得到了json输出,但它并没有刷新,而是在20秒后抛出

RuntimeError:在应用程序上下文之外工作。这通常意味着您试图以某种方式使用与当前应用程序对象交互所需的功能。要解决此问题,请使用app.app_context()设置应用程序上下文。有关详细信息,请参阅文档。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 05:36:41

如果这在某种程度上颠覆了问题,很抱歉,但如果您希望用户每30秒发送一次,这可能不应该在后端完成。后端应该只在发出请求时发送数据。为了定期发送数据,需要将前端配置为以定期间隔发出请求

就我个人而言,我建议使用i-frame和javascript的组合来实现这一点,如下面的堆栈溢出问题所述:Auto Refresh IFrame HTML

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

代码语言:javascript
复制
if __name__ == "__main__":   
application.run()

"application.run()“行应该缩进,因为它在if语句中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51662155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档