【问题标题】:Django + MongoDB - pymongo.errors.ServerSelectionTimeoutErrorDjango + MongoDB - pymongo.errors.ServerSelectionTimeoutError
【发布时间】:2020-04-10 23:15:07
【问题描述】:

我试图在我的 Django 应用中实现 MongoDB,如下所示:

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

但我收到此错误:

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

由于目标机器主动拒绝,无法建立连接


追溯:

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

非常感谢您的帮助

【问题讨论】:

  • 在 gunicorn/gevent 的重负载下使用 djongo 时出现间歇性 ServerSelectionTimeoutError。当我获得更多流量时,似乎会发生更多。不确定它是否与超时设置有关。

标签: django mongodb


【解决方案1】:

首先检查您是否通过了所有这些步骤 尝试更改 mongodb 的端口,这将使它有希望工作:)

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

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

【讨论】:

  • 这就是我所拥有的
  • /etc/mongodb.config 在 \env\Lib\site-packages\djongo 中吗?
  • 如果你在 mac 我想是的
猜你喜欢
  • 2021-02-13
  • 2021-12-14
  • 2021-09-16
  • 2020-07-09
  • 2022-07-09
  • 1970-01-01
  • 2021-04-10
  • 2020-03-28
  • 2019-10-06
相关资源
最近更新 更多