我正在做一个由同事交给我的项目。在提取存储库之后,我无法运行,得到一个错误
Exception has occurred: ConfigurationError
None of DNS query names exist: _mongodb._tcp.stage.xxxx.mongodb.net., _mongodb._tcp.stage.xxxx.mongodb.net.xxxx.com., _mongodb._tcp.stage.xxxx.mongodb.net.hsd1.tx.comcast.net., _mongodb._tcp.stage.xxxx.mongodb.net.tx.comcast.net., _mongodb._tcp.stage.xxxx.mongodb.net.comcast.net.
奇怪的是,这种回购对我的同事来说非常好。他有相同的python版本,同样的依赖/等等,没有问题。下面是requirements.txt
fastapi==0.65.2
uvicorn==0.11.7
gunicorn==20.0.4
elastic-apm==5.8.0
pymongo[srv]==3.12.0
pydantic==1.7.4
singleton-decorator==1.0.0
requests==2.27.1
requests-oauthlib==1.3.1
oauthlib==3.2.0
python-multipart==0.0.5
cachetools==5.0.0
pytz==2022.1
python-dotenv==0.14.0
我正在使用Python3.8.6,也尝试使用3.9.10,但问题相同。
这正是我要跑腿的地方。
@singleton
class MongoDB:
"""MongoDB Class"""
def __init__(self, config: MongoDbConfig):
"""Initial MongoDB Connection on collection level"""
_uri = "mongodb+srv://{username}:{password}@{host}/{db}?authSource=admin&replicaSet={replica_set}&readPreference=primary&connectTimeoutMS={timeout}&authMechanism=SCRAM-SHA-1".format(
username=config.username,
password=config.password,
host=config.host,
db=config.db,
replica_set=config.replicate_set,
timeout=1000,
maxPoolSize=config.max_pool,
)
self.client = MongoClient(_uri)
当我安装dnspython==2.2.1时,我的错误减少到
The DNS query name does not exist: _mongodb._tcp.stage.XXXX.mongodb.net.
我的env变量和系统变量与我的同事完全一致。我们现在都在偏远地区工作。我尝试过google修复,但它似乎不起作用。关于我该如何解决这个问题的任何建议/建议。我完全迷路了。
发布于 2022-06-27 16:41:05
在运行应用程序的服务器上,您可以在文件/etc/hosts
中为应该存在mongodb的主机添加条目,例如:
<IP_of_mongodb_server> _mongodb._tcp.stage.XXXX.mongodb.net
这仅仅是一个解决方法,它将显式地将_mongodb._tcp.stage.XXXX.mongodb.net指向您在文件中设置的IP .
最好的选择是在mngodb.net网站上设置一个公共IP作为DNS条目。信息可以在MongoDB社区找到。示例:https://www.mongodb.com/community/forums/t/mongo-connection-test-dns-name-does-not-exist/86048或https://www.mongodb.com/community/forums/t/dnshostnotfound-failed-to-look-up-service/109605
https://stackoverflow.com/questions/72777608
复制相似问题