MongoEngine并处理"UserWarning:在fork之前打开MongoClient.使用connect = False创建MongoClient,或者在分叉后创建客户端"

Ous*_*uss 5 python django celery mongoengine django-celery

我使用Celery和MongoEngine作为我的Django App的一部分.

当celery @shared_task通过mongoengine模型类访问mongodb数据库时,我收到此警告:

UserWarning: MongoClient opened before fork. Create MongoClient with
connect=False,or create client after forking. See PyMongo's
documentation for details:
http://api.mongodb.org/python/current/faq.html#using-pymongo-with-multiprocessing
Run Code Online (Sandbox Code Playgroud)

它显然与多处理和pyMongo有关,这是mongoengine所基于的.

我的问题是:

用mongoengine避免这个问题的最佳策略是什么?

请注意,我正在使用mongoengine连接到mongodb settings.py:

mongoengine.connect('my_mongo_database_name', alias='default')
Run Code Online (Sandbox Code Playgroud)

Ous*_*uss 5

在网上搜索了一下之后,我发现可以将额外的参数传递给mongoengine.connect函数,其他参数将传递给底层的PyMongo类和函数.

所以我只是编辑mongoengine.connect()了以下的调用:

mongoengine.connect('my_mongo_database_name', alias='default', connect=False)
Run Code Online (Sandbox Code Playgroud)

警告停止了.尽管如此,我不确定这是处理警告的最佳方式.如果你有更好的答案,请发布它,我很乐意测试它,并最终接受它.

  • 与芹菜和烧瓶有同样的问题.还想知道最好的方法. (2认同)