pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
您好,我在尝试以python部署Django网站时遇到了一些麻烦。尝试连接MongoDB Atlas数据库时出现此错误(如上所示)。我读到我必须将我的IP列入白名单,但是当我这样做时,它没有用。
这是我的views.py文件:
class Initialize():
def __init__(self, name):
self.name = name
myclient = pymongo.MongoClient('mongodb+srv://<MY Username>:<My Password>@cluster0-gicez.mongodb.net/test?retryWrites=true&w=majority')
global mydb
mydb = myclient[f"{self.name}"]
global userData
userData = mydb["userData"]
global authData
authData = mydb["auth_user"]
global storesCollection
storesCollection = mydb["stores"]
global mycolPostalCodes
mycolPostalCodes = mydb["postalCodes"]
在尝试部署代码之前运行代码时,代码运行良好。另外,这是我的settings.py文件:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'cluster0',
'HOST' : 'mongodb+srv://<my username>:<my password>@cluster0-gicez.mongodb.net/test?retryWrites=true&w=majority',
'USER': '<my username>',
'PASSWORD': '<my password>',
}
}
任何帮助将不胜感激。谢谢。如果需要,请给我发消息以获取更多信息。
答案 0 :(得分:1)
您需要将客户端IP(在本例中为Heroku)列入白名单。其IP地址在here中进行了描述。将您的家用/笔记本电脑 IP列入白名单后,Heroku无法连接到您的集群。
要找出特定机器的地址,您可以运行例如有关机器上的以下代码:
python -c "import urllib; print(urllib.urlopen('https://wtfismyip.com/text').read())"
答案 1 :(得分:1)
因此,我要做的就是更改设置文件。我连接到mongodb地图集的方式已经过时。 所以这是我的联系方式:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'CLIENT': {
'host': 'mongodb+srv://{username}:{password}@cluster0-gicez.mongodb.net/test?retryWrites=true&w=majority',
'username': {username},
'password': {password},
'authMechanism': 'SCRAM-SHA-1'
}
}
}