6
votes

Comment se connecter à MongoDB via une prise UNIX en Python

Y a-t-il un moyen de se connecter à MongoDB via une prise UNIX en Python, tandis que le module officiel PYMONGO ne prend pas encore la prise UNIX.

J'aimerais que toutes les alternatives tiers, ou des correctifs, tandis que je cherchais autour de moi et que je n'en trouvais pas.

Je n'aime pas une bibliothèque de style orm puisque les dicts Mongodb => Python sont naturels et faciles à utiliser, donc je n'ai pas pris quelque chose comme un compte de Mongoengine.


0 commentaires

3 Réponses :


1
votes

En dehors de la portée de Python, vous pouvez créer un proxy entre prise TCP / IP et prise de domaine UNIX. Donc, vous pouvez toujours utiliser Pymongo

soit NETCAT ou Socat peut faire cela. p>

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


1 commentaires

Merci quand même, mais ce n'est pas exactement ce que je veux :) Je souhaite utiliser une prise UNIX pour la performance et la stabilité, mais si je construis un proxy dans TCP et que les deux objectifs sont tous manquants.



8
votes

MongoDB, par défaut, crée une prise UNIX à /tmp/mongodb-27017.sock . AS de Pymongo 2.4, vous pouvez créer une connexion comme celle-ci: xxx

Vous pouvez également désactiver ce comportement en démarrant Mongod avec - NounixSocket ou spécifiez un autre emplacement avec < Code> - UnixSocketPrefix

MongoDB créera toujours et écoutera toujours sur une prise UNIX, sauf si - NounixSocket est défini, - BIND_IP n'est pas défini ou - bind_ip Spécifie 127.0.0.1 .


2 commentaires

Cela a donc finalement été mis en œuvre depuis PymonGo 2.4. Merci!


Dis, "comme de Pymongo 2.4". Est-ce que Pymisto est celui qui crée la prise UNIX? Ou est-ce " ... chaussette . A partir de Pymongo 2.4, vous pouvez créer une connexion ..."



6
votes

Mise à jour pour Mongodb v3.x

Si vous effectuez une mise à niveau vers MongoDB 3.x sur Linux, le groupe et les autres autorisations sur /tmp/mongodb-27017.Sock ont ​​été supprimées. Vous recevrez une autorisation refusée d'erreur lorsque vous vous connectez à l'aide de Mongoclient (hôte = '/ tmp / mongodb-27017.sock') P>

Pour résoudre ce problème, mettez à niveau votre fichier de configuration de MongoDB sur le format YAML, qui inclut l'option Filepermissions. Donc, vous définissez les autorisations en arrière. p>

exemple /etc/mongod.conf en format YAML: P>

storage:
    dbPath: "/var/lib/mongodb"
systemLog:
    destination: file
    path: "/var/log/mongodb/mongod.log"
    logAppend: true
net:
    unixDomainSocket:
        filePermissions: 0777


0 commentaires