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,且在线程里进行数据库查询时创建新的会话去查询
Buy me a cup of coffee ☕.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人