MongoEngine and dealing with “UserWarning: MongoClient opened before fork. Create MongoClient with connect=False, or create client after forking”

≯℡__Kan透↙ 提交于 2019-12-05 01:02:10

问题


I am using Celery and MongoEngine as part of my Django App with.

I am getting this warning, when a celery @shared_task accesses the mongodb database via mongoengine model classes:

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

It clearly has something to do with multiprocessing and pyMongo that is that mongoengine is based on.

My question is:

What is the best strategy to avoid this issue with mongoengine?

Please note that i am connecting to the mongodb with mongoengine in the settings.py:

mongoengine.connect('my_mongo_database_name', alias='default')

回答1:


After searching a little bit online, i found out that it is possible to pass additional arguments to the mongoengine.connect function the additional arguments will be passed to the underlying PyMongo classes & functions.

So i simply edited the mongoengine.connect() call to the following:

mongoengine.connect('my_mongo_database_name', alias='default', connect=False)

And the warning stopped appearing. None the less i am not sure this is the best way to deal with the warning. If you have a better answer please post it and i will gladly test it and eventually accept it.



来源:https://stackoverflow.com/questions/44133435/mongoengine-and-dealing-with-userwarning-mongoclient-opened-before-fork-creat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!