Pymongo、连接池和通过Celery的异步任务
我正在使用pymongo来访问mongodb,同时我的应用程序还使用Celery来执行许多异步任务。我知道pymongo的连接池不支持异步工作者(根据文档)。
为了访问集合,我有一个集合类,它封装了一些适合我应用程序的逻辑。我正在尝试理解一些我继承的代码,这段代码与这个封装有关:
目前,每个集合都会创建自己的连接实例。根据我所阅读的内容,这样做是不对的,我应该只创建一个连接实例(在settings.py或类似的地方),然后在我的集合实例中引用它。这一点很清楚。关于推荐的最大连接数有什么指导吗?当前的代码显然创建了很多连接/套接字,因为它并没有真正利用连接池的功能。
不过,由于某些代码同时被异步的celery任务和同步运行调用,我不太确定该如何处理这个问题。我的想法是为任务实例化新的连接实例,而对同步的任务使用那个单一的连接实例(当然在每次活动完成后要结束请求)。这样做方向对吗?
谢谢!
哈雷尔