当我启动一些服务时,它会报告这样的警告,服务会停止:
/usr/lib64/python2.6/site-packages/pymongo/topology.py:75:
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>
"MongoClient opened before fork. Create MongoClient "
字符串
但是,MongoClient
一直使用参数connect=False
,您可以查看下面的代码:
client = MongoClient(host, port, connect=False)
型
还是不行,顺便说一句,我已经把我的pymongo版本升级到3. 4. 0了,有没有人给予点建议?
干杯凯
3条答案
按热度按时间oalqel3c1#
如果你使用MongoClient进行任何与MongoDB服务器连接的操作,那么MongoClient必须创建连接和后台线程。一旦发生这种情况,在分叉的子进程中使用它就不再安全了。例如,这是不安全的:
字符串
确保在导致客户端连接的fork之前,您没有对客户端执行任何操作。
更好的是,在fork之前根本不要创建客户端。在fork之后,在子流程中创建客户端。
jw5wzhpr2#
我遇到了同样的问题,但设置略有不同。对我来说,它是Flask应用程序,
MongoClient
是通过flask_mongoengine
创建的。这是我的答案lp0sw83n3#
我选择这样做:
字符串
通过创建一个按进程标识符划分的字典。