所有名称服务器都无法响应 UDP 端口 53 谷歌云函数 python 3.7 atlas mongodb
Posted
技术标签:
【中文标题】所有名称服务器都无法响应 UDP 端口 53 谷歌云函数 python 3.7 atlas mongodb【英文标题】:All nameservers failed to answer UDP port 53 Google cloud functions python 3.7 atlas mongodb 【发布时间】:2020-11-14 16:58:27 【问题描述】:我可以本地连接到地址为 0.0.0.0/0 的我的 mongodb 服务器。但是,当我将代码部署到云时,我收到错误部署到谷歌云功能。
带有python 3.7(测试版)的谷歌云功能 阿特拉斯 mongo 数据库 蟒蛇库: -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
【问题讨论】:
我想将您的问题改写如下:“我可以使用地址 0.0.0.0/0 在本地连接到我的 mongo db 服务器。但是,当我将代码部署到云时,我得到了错误:...” 我在 mongo db 方面没有经验,但我正在努力为其他人澄清问题。我不确定我是否在帮助... 【参考方案1】:终于在卡住 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 中查看您的连接字符串。
知道为什么在谷歌云功能中无法使用 srv 连接字符串,现在可能不支持,或者只是配置错误。
【讨论】:
其实我觉得我有办法。通过安装dnspython
可以使用mongodb+srv://
URI;见the docs。【参考方案2】:
这可能对某些人有所帮助,当我尝试使用 mongodb+srv://
语法连接到 MongoDB 时,我在 Windows 上遇到了这个错误,如果我通过 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
【讨论】:
以上是关于所有名称服务器都无法响应 UDP 端口 53 谷歌云函数 python 3.7 atlas mongodb的主要内容,如果未能解决你的问题,请参考以下文章
hacker之眼Nmap的原理及用法(十六)设计理想的探针组合