Как подключиться к mongodb через сокет unix в python - PullRequest
6 голосов
/ 07 декабря 2011

Есть ли способ подключиться к mongodb через сокет unix в python, в то время как официальный модуль pymongo пока не поддерживает сокет unix.или патчи, пока я искал и не нашел ни одного.

Мне не нравится библиотека в стиле ORM, так как python-выражения mongodb => естественны и просты в использовании, поэтому я не сталчто-то вроде MongoEngine во внимание.

Ответы [ 3 ]

7 голосов
/ 22 мая 2013

MongoDB по умолчанию создает сокет unix на /tmp/mongodb-27017.sock.Начиная с pymongo 2.4 вы можете установить соединение следующим образом:

from pymongo import MongoClient
CONNECTION = MongoClient('/tmp/mongodb-27017.sock')

Кроме того, вы можете отключить это поведение, запустив mongod с --nounixsocket или указав альтернативное местоположение с --unixSocketPrefix <path>

MongoDBвсегда будет создавать и прослушивать сокет UNIX, если не установлено --nounixsocket, --bind_ip не установлено или --bind_ip указывает 127.0.0.1.

6 голосов
/ 05 июня 2015

Обновление для MongoDB v3.x

Если вы обновитесь до MongoDB 3.x в Linux, группа и другие разрешения в /tmp/mongodb-27017.sock будут удалены. Вы получите сообщение об ошибке «Отказано в доступе» при подключении с использованием MongoClient (host = '/ tmp / mongodb-27017.sock')

Чтобы исправить это, обновите файл конфигурации MongoDB до формата YAML, который включает опцию filePermissions, чтобы вы снова установили права доступа.

Пример /etc/mongod.conf в формате YAML:

storage:
    dbPath: "/var/lib/mongodb"
systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
net:
    unixDomainSocket:
        filePermissions: 0777
1 голос
/ 07 декабря 2011

За пределами Python вы можете создать прокси между сокетом TCP / IP и доменным сокетом unix.Таким образом, вы все еще можете использовать pymongo

Либо netcat , либо socat . Это можно сделать.

nc -l 1234 | nc -U /tmp/foo

или

socat TCP-LISTEN:1234,reuseaddr,fork UNIX-CLIENT:/tmp/foo

См. Также:

Перенаправление TCP-трафика на сокет домена UNIX под Linux

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...