作者:过去丶真的過卜去 | 来源:互联网 | 2023-01-16 15:33
当我启动我的一些服务时,它会报告此类警告并停止服务:
/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 "
UserWarning:MongoClient在fork之前打开.使用cOnnect= False创建MongoClient,或者在分叉后创建客户端.有关详细信息,请参阅PyMongo的文档:http:
//api.mongodb.org/python/current/faq.html#using-pymongo-with-multiprocessing>"在fork之前打开MongoClient.创建MongoClient"
但是,"MongoClient"一直使用参数"cOnnect= False",因为您可以查看下面的代码:
client = MongoClient(host, port, cOnnect=False)
它仍然无法正常工作.顺便说一句,我已将我的pymongo版本升级到3.4.0.有人可以给我一些建议吗?
干杯,凯
1> A. Jesse Jir..:
如果您使用的MongoClient任何操作接触MongoDB服务器,那么MongoClient必须建立连接和后台线程.一旦发生这种情况,在分叉子流程中使用它就不再安全了.例如,这是不安全的:
client = MongoClient(cOnnect=False)
client.admin.command('ping') # The client now connects.
if not os.fork():
client.admin.command('ping') # This will print the warning.
确保在fork之前没有对客户端做任何事情,导致它连接.
更好的是,不要在分叉之前创建客户端.在fork之后,在子进程中创建客户端.