采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
如题 我要在socketio的后台线程start_background_task中使用数据库 为什么db为空呢
谢谢老师抽空看我的问题 这2天被这个问题 弄的头大 ...
下面是我简化的代码 我是做java的 现在在学python 学了老师的课程后 在做一个其他demo
问题: 在方法task中不能使用sqlAlthemy的db 提示错误:
get_app
'No application found. Either work inside a view function or push'
RuntimeError: No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/.
以下是我简化后的代码
from flask import Flask, Response from flask_sqlalchemy import SQLAlchemy from flask_socketio import SocketIO from threading import Lock app = Flask(__name__) db_str = "{}+{}://{}:{}@{}:{}/{}?charset=utf8" app.config['SQLALCHEMY_DATABASE_URI'] = db_str.format('') db = SQLAlchemy() socketio = SocketIO() db.init_app(app) socketio.init_app(app) lockObj = None thread_lock = Lock() thread_flag = None @app.route('/') def run(): global thread_flag with thread_lock: if thread_flag is None: thread_flag = socketio.start_background_task(task) return Response(response='success') def task(): print(' enter ... ', str(db.engine)) if __name__ == '__main__': app.config['JSON_AS_ASCII'] = False socketio.run(app)
我找到问题了 是在调用的时候(start_background_task(task))必须是start_background_task(task()) 方法带括号和不带括号有区别的 ... 但还不知道为什么
抱歉,我对socketio没有了解。但这个理论上是不冲突的。
老师 python后台线程是不是会隔离上下文?
你这个Python后台线程是具体指什么?还是要说清楚点呀。
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.5k 7
2.5k 3
2.1k 4
4.1k 22
2.3k 19