一部のサービスを開始すると、そのような警告が報告され、サービスが停止します。
/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にアップグレードしました。誰かが私にいくつかの提案をすることができますか?
乾杯、カイ
se MongoDBサーバーに接続する操作にMongoClientを使用する場合、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.
クライアントを接続させるフォークの前に、クライアントに対して何もしていないことを確認してください。
さらに良いことに、フォークする前にクライアントを作成しないでください。サブプロセスで、フォークの後にクライアントを作成します。
私は同じ問題を抱えていましたが、セットアップが少し異なりました。私にとってはFlaskアプリで、MongoClient
はflask_mongoengine
を介して作成されました。これが私の answare です。