정글/프로젝트

[트러블슈팅] MongoDB ECONNREFUSED 127.0.0.1:27017 에러

nkdev 2025. 2. 9. 01:19

⚠️ 발생 에러

localhost에서 플라스크 서버를 실행하고 브라우저에 접속하여 GET, POST 요청을 보냈는데 서버 에러가 발생했다.

db에 데이터가 저장되고 있나 확인하려고 mongosh에 접속하려고 하니 에러가 발생했다.

 

Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.8

MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

 

✅ 해결 과정

% brew services list

실행되고 있는 서비스 목록을 확인해보니 status가 none이었다. 

mongodb가 실행되고 있지 않아서 커넥션을 실패한 것이다.

 

 

% brew services start mongodb/brew/mongodb-community

mongodb를 실행시켜주자.

 

mongosh 접속이 된다.

 

그리고 mongodb를 실행했더니 GET, POST 요청도 정상적으로 동작하고 db에 있는 내용이 보였다!

그냥 db가 실행이 안 되고 있어서 발생한 문제였다. 

 

🧑🏻‍💻 결국 검색을 통해 알아냈지만 에러 로그를 보고 혼자 해결할 수는 없었을까?

브라우저의 검사 탭에서는 그냥 서버 에러라고만 떠서 파악할 수 없었고,

서버 터미널에 기록된 에러 로그를 다시 살펴보니 다음과 같았다.

더보기

127.0.0.1 - - [08/Feb/2025 21:35:17] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [08/Feb/2025 21:35:48] "GET /memos HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 1514, in wsgi_app
    response = self.handle_exception(e)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/Users/soyoung/crafton_jungle/exam/app.py", line 24, in read_memos
    memos = list(db.memos.find({}, {'_id':True, 'title':True, 'content':True, 'likes':True}))
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/cursor.py", line 1281, in __next__
    return self.next()
           ~~~~~~~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/cursor.py", line 1257, in next
    if len(self._data) or self._refresh():
                          ~~~~~~~~~~~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/cursor.py", line 1205, in _refresh
    self._send_message(q)
    ~~~~~~~~~~~~~~~~~~^^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/cursor.py", line 1100, in _send_message
    response = client._run_operation(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/_csot.py", line 119, in csot_wrapper
    return func(self, *args, **kwargs)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1752, in _run_operation
    return self._retryable_read(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1861, in _retryable_read
    return self._retry_internal(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/_csot.py", line 119, in csot_wrapper
    return func(self, *args, **kwargs)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1828, in _retry_internal
    ).run()
      ~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 2565, in run
    return self._read() if self._is_read else self._write()
           ~~~~~~~~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 2700, in _read
    self._server = self._get_server()
                   ~~~~~~~~~~~~~~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 2656, in _get_server
    return self._client._select_server(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1647, in _select_server
    server = topology.select_server(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 402, in select_server
    server = self._select_server(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 380, in _select_server
    servers = self.select_servers(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 287, in select_servers
    server_descriptions = self._select_servers_loop(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 337, in _select_servers_loop
    raise ServerSelectionTimeoutError(
    ^
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms), Timeout: 30s, Topology Description: <TopologyDescription id: 67a74f82dbbaa563b964615f, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms)')>]>
127.0.0.1 - - [08/Feb/2025 21:36:05] "POST /memos HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 1514, in wsgi_app
    response = self.handle_exception(e)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "/Users/soyoung/crafton_jungle/exam/app.py", line 50, in post_memo
    db.memos.insert_one(memo)
    ~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/collection.py", line 891, in insert_one
    self._insert_one(
    ^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/collection.py", line 831, in _insert_one
    self._database.client._retryable_write(
    ^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1896, in _retryable_write
    return self._retry_with_session(retryable, func, s, bulk, operation, operation_id)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1782, in _retry_with_session
    return self._retry_internal(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/_csot.py", line 119, in csot_wrapper
    return func(self, *args, **kwargs)
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1828, in _retry_internal
    ).run()
      ~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 2565, in run
    return self._read() if self._is_read else self._write()
                                              ~~~~~~~~~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 2673, in _write
    self._server = self._get_server()
                   ~~~~~~~~~~~~~~~~^^
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 2656, in _get_server
    return self._client._select_server(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/mongo_client.py", line 1647, in _select_server
    server = topology.select_server(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 402, in select_server
    server = self._select_server(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 380, in _select_server
    servers = self.select_servers(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 287, in select_servers
    server_descriptions = self._select_servers_loop(
    
  File "/Users/soyoung/crafton_jungle/.venv/lib/python3.13/site-packages/pymongo/synchronous/topology.py", line 337, in _select_servers_loop
    raise ServerSelectionTimeoutError(
    ^
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms), Timeout: 30s, Topology Description: <TopologyDescription id: 67a74f82dbbaa563b964615f, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms)')>]>
^C& /Users/soyoung/crafton_jungle/.venv/bin/python /Users/soyoung/crafton_jungle/exam/app.py

빨간색으로 표시한 것과 같이 pymongo에서 connection refused 에러가 발생했음을 확인할 수 있다. 

 

'정글 > 프로젝트' 카테고리의 다른 글

[트러블슈팅] 파이썬 KeyError  (1) 2025.02.09