3

我可以使用地址 0.0.0.0/0 在本地连接到我的 mongodb 服务器。但是,当我将代码部署到云时,我收到错误部署到谷歌云功能。

谷歌云函数与 python 3.7 (beta) atlas mongo db python lib: -pymongo -dnspython

Error: function crashed. Details: All nameservers failed to answer the query _mongodb._tcp.**-***.gcp.mongodb.net. IN SRV: Server ***.***.***.*** UDP port 53 answered SERVFAIL

Traceback (most recent call last): File "/env/local/lib/python3.7/site-packages/pymongo/uri_parser.py", line 287, in _get_dns_srv_hosts results = resolver.query('_mongodb._tcp.' + hostname, 'SRV') File "/env/local/lib/python3.7/site-packages/dns/resolver.py", line 1132, in query raise_on_no_answer, source_port) File "/env/local/lib/python3.7/site-packages/dns/resolver.py", line 947, in query raise NoNameservers(request=request, errors=errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _mongodb._tcp.**mymongodb**-r091o.gcp.mongodb.net. IN SRV: Server ***.***.***.*** UDP port 53

4

2 回答 2

4

终于在卡住 2 天后,goblok banget semaleman

只需更改连接

SRV 连接字符串(3.6+ 驱动程序)

标准连接字符串(3.4+ 驱动程序)

mongodb://<USERNAME>:<PASSWORD>@<DATABASE>-shard-00-00-r091o.gcp.mongodb.net:27017,<COLLECTION>-shard-00-01-r091o.gcp.mongodb.net:27017,<COLLECTION>-shard-00-02-r091o.gcp.mongodb.net:27017/test?ssl=true&replicaSet=<COLLECTION>-shard-0&authSource=admin&retryWrites=true

或者您可以在 atlas mongodb 中查看您的连接字符串。

idk 为什么不能在谷歌云函数中连接 srv 连接字符串,现在可能不支持,或者只是配置错误。

于 2018-12-02T17:10:24.277 回答
0

这可能会有所帮助,当我尝试使用语法连接到 MongoDB 时,我在 Windows 上遇到了这个错误,mongodb+srv://如果我通过 WSL 或 Linux 机器尝试它,它工作得很好。

来自https://forum.omz-software.com/topic/6751/pymongo-errors-configurationerror-resolver-configuration-could-not-be-read-or-specified-no-nameservers/4

import dns.resolver
dns.resolver.default_resolver=dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers=['8.8.8.8'] # this is a google public dns server,  use whatever dns server you like here
# as a test, dns.resolver.query('www.google.com') should return an answer, not an exception
于 2021-06-02T22:41:18.703 回答