flask 使用多线程出现超出上下文的问题
class GoodsCrawlApi(Resource):
def post(self):
""" 手动启动爬虫任务 """
# 执行异步爬虫
CrawlService().crawl()
return jsonify({
'code': 0,
"message": "success"
})
class CrawlService():
def __init__(self):
pass
def crawl(self):
with ThreadPoolExecutor(max_workers=2) as executor:
future2 = executor.submit(self.tb_crawl,tb_goods_item_list)
result2 = future2.result() # 获取任务结果
def tb_crawl(self, tb_goods_item_list):
from app import app
# with app.app_context():
# Session = sessionmaker(bind=db.engine)
# session = Session()
# a = session.query(Goods).all()
# session.close()
解决方法:
导入当前的app,而不是使用from flask import current_app as app,且在线程里进行数据库查询时创建新的会话去查询

浙公网安备 33010602011771号