Pythonでunixソケット経由でmongodbに接続する方法はありますか?pymongoモジュールはまだUNIXソケットをサポートしていません。PythonでUnixソケット経由でmongodbに接続する方法
私が検索して見つけていない間に、サードパーティの代替製品やパッチが必要です。
mongodb => python dictsは自然で使いやすいので、私はORM形式のライブラリが気に入らないので、MongoEngineのようなものを考慮しませんでした。
Pythonでunixソケット経由でmongodbに接続する方法はありますか?pymongoモジュールはまだUNIXソケットをサポートしていません。PythonでUnixソケット経由でmongodbに接続する方法
私が検索して見つけていない間に、サードパーティの代替製品やパッチが必要です。
mongodb => python dictsは自然で使いやすいので、私はORM形式のライブラリが気に入らないので、MongoEngineのようなものを考慮しませんでした。
MongoDBは、デフォルトでは、/tmp/mongodb-27017.sock
でUnixソケットを作成します。
from pymongo import MongoClient
CONNECTION = MongoClient('/tmp/mongodb-27017.sock')
はまた、あなたが--nounixsocket
でのmongodを起動すると、この動作を無効にするか、常に作成し、UNIX上でリッスンします--unixSocketPrefix <path>
MongoDBを持つ別の場所を指定することができますpymongo 2.4のとして、あなたは、このような接続を行うことができます--nounixsocket
が設定されていない場合、--bind_ip
が設定されていないか、--bind_ip
が127.0.0.1
と指定されている場合を除きます。あなたがLinux上でのMongoDB 3.xのにアップグレードした場合のMongoDB v3.xの
ため
Pythonの範囲外では、TCP/IPソケットとUNIXドメインソケットの間にプロキシを構築できます。だから、あなたはまだpymongoを使用することができます
いずれかnetcatまたはsocatこれを行うことができます。
nc -l 1234 | nc -U /tmp/foo
または
socat TCP-LISTEN:1234,reuseaddr,fork UNIX-CLIENT:/tmp/foo
も参照してください:
はとにかくありがとうございますが、これは私が:)私は、パフォーマンスと安定性のためにUNIXソケットを使用したいが、私はビルドする場合は希望通りものではありませんTCPのプロキシと2つの目標がすべて欠けているクエリを転送します。 –
アップデートは、/tmp/mongodb-27017.sock上のグループと他の権限は削除されました。 MongoClient(host = '/ tmp/mongodb-27017.sock')を使用して接続すると、エラーが許可されなくなります。
これを修正するには、MongoDB設定ファイルをfilePermissionsオプションを含むYAML形式にアップグレードしますアクセス許可を戻します。 YAMLフォーマットで
例/etc/mongod.conf:
storage:
dbPath: "/var/lib/mongodb"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
net:
unixDomainSocket:
filePermissions: 0777
これは最終的にpymongo 2.4以降に実装されました。ありがとうございました! –
「pymongo 2.4以降」と言ってください。 pymongoはunixソケットを作成していますか?または、それは "...靴下"です.pymongo 2.4では、接続することができます... " –
明快に編集してください、ありがとうございます。 –