我正在使用 Celery 和 MongoEngine 作为我的 Django 应用程序的一部分。
当 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
它显然与 multiprocessing 和 pyMongo 有关,这是 mongoengine 的基础。
我的问题是:
避免 mongoengine 出现此问题的最佳策略是什么?
请注意,我在 settings.py
中使用 mongoengine 连接到 mongodb:
mongoengine.connect('my_mongo_database_name', alias='default')
最佳答案
在网上搜索了一下之后,我发现可以将额外的参数传递给 mongoengine.connect
函数,额外的参数将传递给底层的 PyMongo
类和函数。
所以我简单地将 mongoengine.connect()
调用编辑为以下内容:
mongoengine.connect('my_mongo_database_name', alias='default', connect=False)
警告不再出现。尽管如此,我不确定这是处理警告的最佳方法。如果您有更好的答案,请发布,我很乐意对其进行测试并最终接受它。
关于python - MongoEngine 和处理 "UserWarning: MongoClient opened before fork. Create MongoClient with connect=False, or create client after forking",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133435/