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

作者:Gim

出处:https://www.cnblogs.com/Gimm/p/18687109

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   踩坑大王  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示