1
votes

Im trying to implement MongoDB in my Django app like this:

DATABASES = {   
    'default': {      
        'ENGINE': 'djongo',      
        'NAME': 'mongodb',  
        }
    }

But I get this error:

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061]

No connection could be made because the target machine actively refused it


Traceback:

Traceback (most recent call last):
  File "c:\users\...\appdata\local\continuum\anaconda3\Lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "c:\users\...\appdata\local\continuum\anaconda3\Lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "D:\Users\...\env\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "D:\Users\...\env\lib\site-packages\django\core\management\commands\runserver.py", line 120, in inner_run
    self.check_migrations()
  File "D:\Users\...\env\lib\site-packages\django\core\management\base.py", line 453, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "D:\Users\...\env\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "D:\Users\...\env\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
    self.build_graph()
  File "D:\Users\...\env\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "D:\Users\...\env\lib\site-packages\django\db\migrations\recorder.py", line 73, in applied_migrations
    if self.has_table():
  File "D:\Users\...\env\lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "D:\Users\...\env\lib\site-packages\django\db\backends\base\introspection.py", line 48, in table_names
    return get_names(cursor)
  File "D:\Users\...\env\lib\site-packages\django\db\backends\base\introspection.py", line 43, in get_names
    return sorted(ti.name for ti in self.get_table_list(cursor)
  File "D:\Users\...\env\lib\site-packages\djongo\introspection.py", line 46, in get_table_list
    for c in cursor.db_conn.list_collection_names()
  File "D:\Users\...\env\lib\site-packages\pymongo\database.py", line 856, in list_collection_names
    for result in self.list_collections(session=session, **kwargs)]
  File "D:\Users\...\env\lib\site-packages\pymongo\database.py", line 819, in list_collections
    _cmd, read_pref, session)
  File "D:\Users\...\env\lib\site-packages\pymongo\mongo_client.py", line 1454, in _retryable_read
    read_pref, session, address=address)
  File "D:\Users\...\env\lib\site-packages\pymongo\mongo_client.py", line 1253, in _select_server
    server = topology.select_server(server_selector)
  File "D:\Users\...\env\lib\site-packages\pymongo\topology.py", line 235, in select_server
    address))
  File "D:\Users\...\env\lib\site-packages\pymongo\topology.py", line 193, in select_servers
    selector, server_timeout, address)
  File "D:\Users\...\env\lib\site-packages\pymongo\topology.py", line 209, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061]
No connection could be made because the target machine actively refused it

Thank you very much for any help

1
I have intermittent ServerSelectionTimeoutError's when using djongo under heavy load over gunicorn/gevent. Seems to happen more as I get more traffic. Not sure if its something to do with the timeout settings. - radtek

1 Answers

1
votes

Check first that you passed through all these steps Try changing port of mongodb , that will make it work hopefully :)

   1) pip install djongo
   2) DATABASES = {
            'default': {
                    'ENGINE': 'djongo',
                    'NAME': 'your-db-name',
            }
    }

    3) python manage.py makemigrations
    4) python manage.py migrate