항해99 13기 0주차 3일

태량·2023년 2월 8일
0

항해99

목록 보기
3/6

우분투에서만 mongoDB 접속이 안되는 건에 대하여.

금요일 웹종반 입학시험에 대한 공지를 확인한 후, 마지막 점검 차 EC2에서 내 서버를 키고, 내 웹 서비스를 시작 해봤다. EC2에게 제공 받는 가변 IP를 다시 적용하고 약간의 오류를 수정하면서

접속완료. 접속은 됐지만, DB에 접속 할 수 없다는 에러를 맞이했다.

Traceback (most recent call last):
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 2548, in call
return self.wsgi_app(environ, start_response)
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 2528, in wsgi_app
response = self.handle_exception(e)
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 2525, in wsgi_app
response = self.full_dispatch_request()
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 1822, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 1820, in full_dispatch_request
rv = self.dispatch_request()
File "/home/ubuntu/.local/lib/python3.10/site-packages/flask/app.py", line 1796, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "/home/sparta/app.py", line 29, in homework_get
result = list(db.fans.find({}, {'_id': False}))
File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/cursor.py", line 1248, in next
if len(self.__data) or self._refresh():
File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/cursor.py", line 1139, in _refresh

우분투에서 출력되는 에러 메시지를 보아하니, pymongo쪽 접속 에러로 의심 됐다. 그래서 먼저

pymongo가 제대로 설치되지 않아서 그런지 다시 인스톨하고, apt list —installed 명령어와 dpkg -i pymongo를 입력해서 목록을 보고 설치 유무를 판단하려고 했지만, 전자는 리스트가 너무 길어서 찾는 것을 포기하고, 후자는 따로 pymongo는 목록에서 뜨지 않았다. 이것은 python3.1 패키지에 포함되어 있기에 그렇다고 생각이 들었다.

그래서 testDB.py 을 새로 만들어 정말 DB접속의 문제인지 파악하기로 했다.

from pymongo import MongoClient

client = MongoClient('mongodb+srv://webuser:webuser@cluster0.whzzs4t.mongodb.net/?retryWrites=true&w=majority')

db = client.dbsparta

def homework_get():
    result = list(db.fans.find({}, {'_id': False}))

    return result

print(homework_get())

-> db에서 fans 테이블에서 데이터를 가져와서 출력을 해봄으로써 우분투 서버에서는 어떤 결과가 나오는지 확인하고자 했다.
ubuntu@ip-172-31-7-181:/home/sparta$ python testDB.py
^CTraceback (most recent call last):
  File "/home/sparta/testDB.py", line 12, in <module>
    print(homework_get())
  File "/home/sparta/testDB.py", line 8, in homework_get
    result = list(db.fans.find({}, {'_id': False}))
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/cursor.py", line 1248, in next
    if len(self.__data) or self._refresh():
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/cursor.py", line 1139, in _refresh
    self.__session = self.__collection.database.client._ensure_session()
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/mongo_client.py", line 1740, in _ensure_session
    return self.__start_session(True, causal_consistency=False)
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/mongo_client.py", line 1685, in __start_session
    self._topology._check_implicit_session_support()
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/topology.py", line 538, in _check_implicit_session_support
    self._check_session_support()
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/topology.py", line 554, in _check_session_support
    self._select_servers_loop(
  File "/home/ubuntu/.local/lib/python3.10/site-packages/pymongo/topology.py", line 250, in _select_servers_loop
    self._condition.wait(common.MIN_HEARTBEAT_INTERVAL)
  File "/usr/lib/python3.10/threading.py", line 324, in wait
    gotit = waiter.acquire(True, timeout)

이러한 에러가 나오는 것을 확인하고, 확실히 DB 연결의 문제라고 확인 했다. 하지만 내 로컬 컴퓨터에서는 되는데, 우분투에선 안되는 것에 집중해보니. DB가 허용하는 IP설정에서 문제가 있을 수도 있겠다 싶었다. 그래서 검색을 통해보니, 관련된 내용이 있었고.

MongoDB 홈페이지에 NetworkAccess 탭에 0.0.0.0/0 주소를 추가해주니 해결!!

동료 항해분 트러블 슈팅에 답하기 위해 노션 페이지 제작

https://alphahexia.notion.site/33b5d472a10b48d398421cd90d50fd03

항해 입학시험을 대비해서 오류 사항들을 공유하고자 공유 노션 페이지 제작

https://alphahexia.notion.site/22ec3abfc80a4b10b6fc85916b00e347

profile
좋은 영향력과 교류를 위하여

0개의 댓글