Heroku部署与MongoDB错误:连接被拒绝

2024-10-02 00:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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>',
    }
}

任何帮助都将不胜感激。谢谢如果需要更多信息,请给我留言


Tags: 文件namepyselfmymongodb部署global
2条回答

所以,我所要做的就是更改我的设置文件。我连接mongodb atlas的方式已经过时了。 下面是我如何连接的:

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'
        }
    }
}

在本例中,您需要将客户端的IP列入白名单。它们的IP地址描述为here。将您的家庭/笔记本电脑IP列入白名单不允许Heroku连接到您的群集

要查找特定机器的地址,您可以在相关机器上运行以下代码:

python -c "import urllib; print(urllib.urlopen('https://wtfismyip.com/text').read())"

相关问题 更多 >

    热门问题