0

MongoDBVPC コネクタとレプリカ セットを使用して Python アプリケーションを Google App Engine にデプロイすると、次のエラーが発生します。

MongoDBは Google Compute Engine 上にあります。

pymongo.errors.ServerSelectionTimeoutError: \
Could not reach any servers in [('mongodb-v44', 27017)]. \
Replica set is configured with internal hostnames or IPs?, \
Timeout: 30s, Topology Description: <TopologyDescription id: \ 
5ff5a4121251453cdcc1ff41, topology_type: ReplicaSetNoPrimary, \ 
servers: [<ServerDescription ('mongodb-v44', 27017) \ 
server_type: Unknown, \ 
rtt: None, error=AutoReconnect('mongodb-v44:27017: \
a [Errno -2] Name or service not known')>]>"

Python コード:

mongo_connection = mongoengine.connect(
    db=os.getenv('DB_NAME'),
    host=os.getenv('DB_HOST_URL'),
    port=int(os.getenv('DB_PORT')),
    username=os.getenv('DB_USERNAME'),
    password=os.getenv('DB_PASSWORD'),
    authentication_source='admin',
    replicaset=os.getenv('REPLICA_SET'),
    read_preference=ReadPreference.PRIMARY_PREFERRED
)

try:
    info = mongo_connection.server_info()  # Forces a call.
except Exception:
    raise Exception("mongo server is down.")
4

2 に答える 2

1

レプリカ セット内のメンバーのホスト名がアプリケーションからアクセスできることを確認してください。

手順:

  1. を確認してくださいrs.config()

  2. メンバーのホスト名を確認してくださいcfg.members[0].host = FQDN

  3. FQDNアプリケーションからアクセスできることを確認してください。

于 2021-01-07T13:33:30.253 に答える