Python 3.x 将我的Python Flask应用程序配置为每30秒调用一个函数
我有一个flask应用程序,它返回JSON响应。但是,我希望它每30秒调用一次该函数,而无需单击浏览器上的刷新按钮。这就是我所做的 使用apscheduler 。此代码位于application.py中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",
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语句中感谢您指出这一点。我在这页上打字时出错了。