我正在使用 pymongo 在一个应用程序中访问 mongodb,该应用程序也使用 Celery 执行许多异步任务。我知道 pymongo 的连接池不支持异步工作者(基于文档)。
要访问集合,我有一个 Collection 类,其中包含适合我的应用程序的某些逻辑。我试图理解我用这个包装器继承的一些代码:
目前,每个集合都会创建自己的 Connection 实例。根据我正在阅读的内容,这是错误的,我真的应该有一个 Connection 实例(在 settings.py 等中)并将其导入我的 Collection 实例中。那一点很清楚。关于推荐的最大连接数是否有指导方针?当前的代码肯定会创建很多连接/套接字,因为它并没有真正使用池化设施。
但是,由于一些代码是从异步 celery 任务以及同步运行中调用的,我不确定如何处理这个问题。我的想法是为任务实例化新的 Connection 实例,并将单个实例用于同步的实例(当然在每个活动完成后结束请求)。这是正确的方向吗?
谢谢!
哈雷尔