Loading

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,且在线程里进行数据库查询时创建新的会话去查询

posted @ 2025-01-23 09:20  踩坑大王  阅读(38)  评论(0)    收藏  举报