【发布时间】: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。当我获得更多流量时,似乎会发生更多。不确定它是否与超时设置有关。