mongodb のドキュメントと pymongo API をしばらく見ても、どのルートを進むべきかについてはまだ明確ではありません (開始したときよりも混乱しています)。私の問題はロックに関するものです...私がテストした結果、同時実行性に大きな問題があることがわかったほどではありませんが、事後にそれらに遭遇したくはありません。
私はいくつかの機能を持つ tkinter スクリプトを持っています。それらはすべて同じドキュメント コレクションにアクセスする必要があり、それらのほとんどはそのコレクション内の同じ単一のドキュメントにアクセスします。
client = MongoClient()
def 1 ():
glob_client = client['ALPHA']['A-Z']
#do work:
"""Also call subprocesses that use the same database document (glob_client) in another script.
There can be 3 -10 instances of this subprocess running, listening to various http streams in a while loop,
collecting data that can come in at 100's of times per second."""
def2 ():
glob_client = client['ALPHA']['A-Z']
...
def32 ():
glob_client = client['ALPHA']['A-Z']
そして、呼び出されたサブプロセス (別々のスクリプトで)、複数のインスタンスが可能です:
client = MongoClient()
glob_client = client['ALPHA']['A-Z']
while True:
#do work with glob_client; updates, push, pull, reads,
では、この場合、すべての関数で client.close() を使用するだけで十分でしょうか?
def 1 ():
glob_client = client['ALPHA']['A-Z']
#do work
client.close()
while ループでも同様です。
while True:
#do work with glob_client; updates, push, pull, reads,
Client.close()
それで十分でしょうか、それともこの場合はシャードを検討する必要がありますか? または、SQL に戻る必要があります。
Mongodb 3.0.6 32 ビット、pymongo 3.03、python 2.7。