python - MongoEngine 和处理 "UserWarning: MongoClient opened before fork. Create MongoClient with connect=False, or create client after forking"

标签 python django celery mongoengine django-celery

我正在使用 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/

相关文章:

python - 使用美国人口普查 API 的 python 包装器格式化人口普查查询

python - 在 mingw 中设置 python 3

python - 在 Django 中对字符串进行 Slugify

python - Django/mysql中间表不插入数据

python - Celery 正确的任务组链

python - Beautifulsoup 在保持顺序的同时找到不同的部分

python - Pygame,livewires : Attribute error: Message object has no attribute 'handle collide'

python - Django不能上传文件和图片

python - 在 Celery 中,我怎样才能防止长期延迟的任务阻塞更新的任务?

python - python中的分布式任务调度程序?