我正在使用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运行时环境时,它不起作用。有人知道这个问题吗?
Appengine错误:
pymongo.errors.ServerSelectionTimeoutError:连接 关闭,连接关闭,连接关闭“
答案 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"