App Engine,pymongo.errors.ServerSelectionTimeoutError:连接已关闭,连接已关闭,连接已关闭“

时间:2019-03-05 14:30:35

标签: python mongodb google-app-engine pymongo mongodb-atlas

我正在使用Python 3.7和Flask 1.0.2

  

我已将我的应用程序插入mongoDB Atlas,并且在本地都可以正常运行

     

client = pymongo.MongoClient(connector)

connector是Atlas提供的我的标准连接字符串

connector = "mongodb://xxx:<PASSWORD>@xxcluster-shard-00-00-y0phk.gcp.mongodb.net:27017,xxcluster-shard-00-01-y0phk.gcp.mongodb.net:27017,xxxcluster-shard-00-02-y0phk.gcp.mongodb.net:27017/test?ssl=true&replicaSet=xxxCluster-shard-0&authSource=admin&retryWrites=true"

当我将应用程序部署到Google App Engine标准Python3运行时环境时,它不起作用。有人知道这个问题吗?

代码: enter image description here Appengine的日志: enter image description here

本地日志(在本地正常运行): enter image description here

Appengine错误:

  

pymongo.errors.ServerSelectionTimeoutError:连接   关闭,连接关闭,连接关闭“

2 个答案:

答案 0 :(得分:2)

  

问题是IP白名单,因此我已经通过vpc对等添加   与gcp连接。

     

为简单起见,我们可以添加0.0.0.0/0以允许从任何地方访问(但是,   小心)

答案 1 :(得分:0)

我建议您使用VPC Peering feature of Atlas在网络和mongodb群集的网络之间建立对等连接。方式更安全;)

请务必按照Private only connection的说明进行操作。为此,您需要通过添加-pri来调整URI。

示例:

old_con = "mongodb://xxx:<PASSWORD>@xxcluster-shard-00-00-y0phk.gcp.mongodb.net:27017,xxcluster-shard-00-01-y0phk.gcp.mongodb.net:27017,xxxcluster-shard-00-02-y0phk.gcp.mongodb.net:27017/test?ssl=true&replicaSet=xxxCluster-shard-0&authSource=admin&retryWrites=true"
new_con = "mongodb://xxx:<PASSWORD>@xxcluster-shard-00-00-y0phk-pri.gcp.mongodb.net:27017,xxcluster-shard-00-01-y0phk-pri.gcp.mongodb.net:27017,xxxcluster-shard-00-02-y0phk-pri.gcp.mongodb.net:27017/test?ssl=true&replicaSet=xxxCluster-shard-0&authSource=admin&retryWrites=true"