关闭后无法使用MongoClient

问题描述 投票:0回答:1

我更新了 pymongo 和 mongoengine 软件包,现在分别是 4.6.0 和 0.27.0。

升级后在我的 Windows 机器上,我正在尝试运行 celery 任务。在那个 celery 任务中,我编写了多个函数,其中一旦该特定函数成功运行,我就会关闭客户端,然后它会调用另一个具有芒果客户端的函数,但这给我提供了给定的错误:

raise InvalidOperation("关闭后无法使用 MongoClient") pymongo.errors.InvalidOperation:关闭后无法使用 MongoClient

代码: 我正在创建客户端并以给定的方式关闭它。

from pymongo import MongoClient
mongo_client = MongoClient(host=host,
                         port=int(port),
                         username=username,
                         password=password,
                         authSource=authSource_db,
                         maxPoolSize=15,
                         MaxIdleTimeMS=120000
                        )
mongo_client.close()
python mongodb pymongo mongoengine
1个回答
0
投票

发生这种情况是因为 celery 是异步的。所以任务执行的顺序是不确定的。在这种情况下,其中一个任务需要客户端,但另一个任务可能在前一个任务完成并且您关闭客户端后定义。

with MongoClient('mongodb://localhost:27017/') as client:
    # your code here 

任务完成后,这将自动关闭连接。

© www.soinside.com 2019 - 2024. All rights reserved.