Y a-t-il un moyen de se connecter à MongoDB via une prise UNIX en Python, tandis que le module officiel J'aimerais que toutes les alternatives tiers, ou des correctifs, tandis que je cherchais autour de moi et que je n'en trouvais pas. p>
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. P>
3 Réponses :
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
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.
MongoDB, par défaut, crée une prise UNIX à Vous pouvez également désactiver ce comportement en démarrant Mongod avec MongoDB créera toujours et écoutera toujours sur une prise UNIX, sauf si /tmp/mongodb-27017.sock code>. AS de Pymongo 2.4, vous pouvez créer une connexion comme celle-ci:
- NounixSocket CODE> ou spécifiez un autre emplacement avec < Code> - UnixSocketPrefix
- NounixSocket code> est défini,
- BIND_IP code> n'est pas défini ou
- bind_ip code> Spécifie
127.0.0.1 code>. p> p>
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 code>. A partir de Pymongo 2.4, vous pouvez créer une connexion ..."
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