Развертывание Heroku с ошибкой MongoDB: соединение отклонено - PullRequest
0 голосов
/ 16 апреля 2020

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused Здравствуйте, у меня возникли небольшие проблемы при попытке развернуть мой Django сайт в python. Я получаю эту ошибку (показано выше) при попытке соединения с моей базой данных атласа MongoDB. Я прочитал, что я должен внести в белый список мой 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>',
    }
}

Любая помощь будет принята с благодарностью. Спасибо. Пожалуйста, напишите мне для получения дополнительной информации, если это необходимо.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Итак, все, что мне нужно было сделать, это изменить файл настроек. То, как я подключался к атласу 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'
        }
    }
}
1 голос
/ 16 апреля 2020

Вам необходимо внести в белый список IP-адрес клиента, в данном случае Heroku. Их IP-адреса описаны здесь . Белый список дом / ноутбук IP не позволяет Heroku подключаться к вашему кластеру.

Чтобы узнать адрес конкретной машины, вы можете запустить, например, следующий код на рассматриваемой машине:

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