2016-09-28 4 views
0
フラスコ-mongoengineを使用してリモートサーバにホストされているMongoDBのクラスタに接続しようとすると

を使用してリモートのMongoDBサーバーに接続できませんが、次のエラーがスローされます。以下は フラスコ-mongoengine

File "test.py", line 9, in <module> 
    inserted = Something(some='whatever').save() 
    File "/home/lokesh/Desktop/Work/Survaider_Apps/new_survaider/survaider-env/lib/python3.5/site-packages/mongoengine/document.py", line 323, in save 
    object_id = collection.save(doc, **write_concern) 
    File "/home/lokesh/Desktop/Work/Survaider_Apps/new_survaider/survaider-env/lib/python3.5/site-packages/pymongo/collection.py", line 2186, in save 
    with self._socket_for_writes() as sock_info: 
    File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__ 
    return next(self.gen) 
    File "/home/lokesh/Desktop/Work/Survaider_Apps/new_survaider/survaider-env/lib/python3.5/site-packages/pymongo/mongo_client.py", line 762, in _get_socket 
    server = self._get_topology().select_server(selector) 
    File "/home/lokesh/Desktop/Work/Survaider_Apps/new_survaider/survaider-env/lib/python3.5/site-packages/pymongo/topology.py", line 210, in select_server 
    address)) 
    File "/home/lokesh/Desktop/Work/Survaider_Apps/new_survaider/survaider-env/lib/python3.5/site-packages/pymongo/topology.py", line 186, in select_servers 
    self._error_message(selector)) 
pymongo.errors.ServerSelectionTimeoutError: admin:27017: [Errno -2] Name or service not known 

は、私が使用していたコードです:

# test.py 

from my_app_module import app 
from flask_mongoengine import MongoEngine 

db = MongoEngine(app) 

class Something(db.Document): 
    some = db.StringField() 

inserted = Something(some='whatever').save() 

print(inserted) 
for obj in Something.objects: 
    print(obj) 

config.pyファイルが含まれています

# config.py 

MONGODB_SETTINGS = { 
    'db': 'testdb', 
    'host': 'mongodb://<my_username>:<my_password>@<my_cluster_replica_1>.mongodb.net:27017,<my_cluster_replica_2>.mongodb.net:27017,<my_cluster_replica_3>.mongodb.net:27017/admin?ssl=true&replicaSet=<my_cluster>&authSource=admin', 
} 

しかし、私次のコードを使用してpymongoを使用して接続できます。

from pymongo import MongoClient 

uri = 'mongodb://<my_username>:<my_password>@<my_cluster_replica_1>.mongodb.net:27017,<my_cluster_replica_2>.mongodb.net:27017,<my_cluster_replica_3>.mongodb.net:27017/admin?ssl=true&replicaSet=<my_cluster>&authSource=admin' 

client = MongoClient(uri) 
db = client['testdb'] 

db.test_collection.insert({'some_key': 'some_value'}) 

for col in db.test_collection.find(): 
    print(col) 

# Prints {'some_key': 'some_value', '_id': ObjectId('57ec35d9312f911329e54d5e')} 

私は解決策を見つけようとしましたが、以前は誰も問題を抱えていないようです。私はMongoDBクラスタをホストするためにMongoDBのAtlasソリューションを使用しています。

答えて