Je connecte mon application Flask à l'atlas mongodb en utilisant Flask-PyMongo, mais j'obtiens cette erreur.
"dns.exception.Timeout: l'opération DNS a expiré après 30.000985383987427 secondes"
et après cela, il dit: Pendant la gestion de l'exception ci-dessus, une autre exception s'est produite:
"pymongo.errors.ConfigurationError: l'opération DNS a expiré après 30.000985383987427 secondes"
Voici le code:
from flask import Flask from flask_pymongo import PyMongo app = Flask(__name__) app.config['MONGO_DBNAME'] = 'FirstCluster' app.config['MONGO_URI'] = 'mongodb+srv://vatsalay:7879229242@firstcluster-bblvc.mongodb.net/test?retryWrites=true' mongo = PyMongo(app) @app.route('/connect') def connect_to_mongo(): return 'Connecting to Mongodb' @app.route('/collections') def adding(): user = mongo.db.users user.insert({'name' : 'vatsalay'}) return 'Added User!' if __name__ == '__main__': app.run(debug=True)
6 Réponses :
Eu le même problème, cela a fonctionné pour moi en changeant mon DNS de automatiquement à "8.8.8.8". Comment? Si vous êtes sous Windows, procédez comme suit
Aussi, comme l'a dit Neil Lunn, vérifiez les ips autorisés
dans mon cas, ce n'était qu'une phase passagère, comme @Neil Lunn l'a dit plus tôt. Donc, si l'un d'entre vous est confronté à ce problème, attendez un jour et il sera résolu. si c'est juste une phase passagère.
Il semble que vous deviez installer pymongo [srv] pour que l'URI mongodb+srv
fonctionne.
Essayez de l'installer avec pip3 install 'pymongo[srv]'
Essayez d'utiliser une chaîne de connexion différente. J'avais des problèmes avec la chaîne 3.6 ou ultérieure, j'ai essayé de changer mon DNS et tout. Simplement utilisé la chaîne 3.4 ou ultérieure et il s'est connecté instantanément.
quel os vous utilisez ??
ses noix que c'est en fait une solution parfaite
Il peut s'agir d'une erreur provoquée lorsque votre client Mongo ne parvient pas à trouver la connexion au serveur. Alors, mieux vaut vérifier votre connectivité Internet, puis exécuter le programme
Même problème dans la norme Google App Engine.
Dans mon cas, la solution était d'utiliser un type d'URL plus ancien:
client = pymongo.MongoClient("mongodb://USERNAME:PASSWORD@CLUSTER...
SW:
La connexion à partir du fichier de test directement à partir du système d'exploitation était OK, mais le même code exécuté à partir du serveur d'applications de développement Google SDK2 échoue.
Après modification de l'URL générée par cloud.mongodb.com Atlas dans la section Cluster -> Connect -> Choisissez une méthode de connexion -> Python - 3.4 ou version ultérieure, la connexion a été établie.
J'utilisais python 3.6.2, j'ai donc choisi d'utiliser la chaîne de connexion pour "3.6 ou version ultérieure". Cela m'a donné cette erreur. Plus tard, je l'ai essayé avec la chaîne de connexion pour "3.4 ou version ultérieure". Cela a parfaitement fonctionné.
Essayez d'utiliser la chaîne de connexion pour "3.4 ou version ultérieure".
Un timeout DNS est probablement le résultat d'un problème de réseau. Cela peut être transitoire (juste une chose passagère) ou soit votre machine exécutant le code nécessite une vérification de configuration que les protocoles DNS sont autorisés, soit l'instance Atlas n'est pas en cours d'exécution. Veuillez également vous assurer que vous avez ajouté l'adresse d'hôte de votre application client à la liste blanche des clients Atlas autorisés, ou un accès autorisé de la même manière à partir de cette machine.
vous aviez raison, ce n'était qu'une phase passagère.
Je travaille sur l'application Flask et j'ai eu le même problème après avoir installé eventlet. Mais lorsque je l'ai désinstallé, le problème de délai d'attente avait disparu. J'espère que cela aide quelqu'un ...