3
votes

j'obtiens cette erreur lors de la connexion à mongodb Atlas: "dns.exception.Timeout: l'opération DNS a expiré après 30.000985383987427 secondes"

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)


3 commentaires

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 ...


6 Réponses :


0
votes

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

  1. Ouvrir les paramètres réseau et Internet
  2. Centre de réseau et partage
  3. Appuyez sur votre connexion Internet Wi-fi (nom de votre routeur)
  4. Optez pour les propriétés
  5. Choisissez tcp / ipv4 et revenez aux propriétés
  6. Choisissez celui-ci et modifiez-le "utilisez le serveur DNS suivant et choisissez" 8.8.8.8 (google dns)

Aussi, comme l'a dit Neil Lunn, vérifiez les ips autorisés


1 commentaires

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.



2
votes

Il semble que vous deviez installer pymongo [srv] pour que l'URI mongodb+srv fonctionne.
Essayez de l'installer avec pip3 install 'pymongo[srv]'


0 commentaires

4
votes

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.


2 commentaires

quel os vous utilisez ??


ses noix que c'est en fait une solution parfaite



0
votes

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


0 commentaires

0
votes

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:

  • Ubuntu 18.04
  • Python 2.7.17 / 2.7.12
  • Pymongo 3.11.1
  • SDK Google Cloud 319.0.0

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.


0 commentaires

0
votes

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".


0 commentaires