⚠️ 발생 에러
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 |
|---|