inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)

FastAPI + MongoDB : MongoDB ODM 셋업

프로젝트 관련질문

895

gimhansu

작성한 질문수 6

0

현재 몽고디비에 데이터가 잘들어가는지 확인하기 위해서 odmantic을 설치한 이후로 오류가 떴고

이러한 오류가떴고 확인 해보니
from odmantic import AIOEngine 문제라는 판단으로 pip install --upgrade odamantic을 했지만 별 효과가 없어서 문의하게되었습니다. 추가적으로 하다보니 init.py 이했을떄는 문제없고 mongodb.connect할 때 문제인데 mongodb의 연결문제라고 생각중입니다

 

Process SpawnProcess-1:

Traceback (most recent call last):

  File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap

    self.run()

  File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 108, in run

    self._target(*self._args, **self._kwargs)

  File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started

    target(sockets=sockets)

  File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 61, in run

    return asyncio.run(self.serve(sockets=sockets))

  File "C:\Users\hs091\anaconda3\lib\asyncio\runners.py", line 44, in run

    return loop.run_until_complete(main)

  File "C:\Users\hs091\anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete

    return future.result()

  File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 68, in serve

    config.load()

  File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\config.py", line 467, in load

    self.loaded_app = import_from_string(self.app)

  File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string

    module = importlib.import_module(module_str)

  File "C:\Users\hs091\anaconda3\lib\importlib\__init__.py", line 127, in import_module

    return bootstrap.gcd_import(name[level:], package, level)

  File "<frozen importlib._bootstrap>", line 1030, in gcdimport

  File "<frozen importlib._bootstrap>", line 1007, in findand_load

  File "<frozen importlib._bootstrap>", line 986, in findand_load_unlocked

  File "<frozen importlib._bootstrap>", line 680, in loadunlocked

  File "<frozen importlib._bootstrap_external>", line 850, in exec_module

  File "<frozen importlib._bootstrap>", line 228, in callwith_frames_removed

  File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\main.py", line 5, in <module>

    from app.models import mongodb

  File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\models\__init__.py", line 2, in <module>

    from odmantic import AIOEngine

  File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\__init__.py", line 1, in <module>

    from .bson import ObjectId

  File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\bson.py", line 11, in <module>

    from pydantic.datetime_parse import parse_datetime

  File "C:\Users\hs091\anaconda3\lib\site-packages\pydantic\_migration.py", line 295, in wrapper

    raise PydanticImportError(f'`{import_path}` has been removed in V2.')

pydantic.errors.PydanticImportError: pydantic.datetime_parse:parse_datetime has been removed in V2.

For further information visit https://errors.pydantic.dev/2.1.1/u/import-error

python 동시성 FastAPI

답변 2

0

마일로

odmantic이 pydatnic을 사용하는데 pydantic이 v2로 업데이트 되면서 지원하지 않는 기능을 사용하고 있어 생긴 문제입니다..
아마 fastapi도 pydantic을 사용하는데 v2로 설치된 것 같네요

odmantic 깃헙 이슈에서도 이부분에 대한 지적이 있긴한데.. 가장 빠른 해결책은 pydantic을 다운그레이드 하는 방법입니다.
pip install pydantic == 1.10.10 이렇게 다운그레이드해서 사용하시는게 좋을 것 같네요

그외에도 fastapi를 최신 버전으로 설치하셨다면 @app.on_envet를 지원하지 않습니다..

from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI):
    logger.info("앱이 시작됩니다.")
    mongoDB.connect()
    await mongoDB.check_connection()

    yield

    logger.info("앱이 종료됩니다.")
    await mongoDB.close()


app = FastAPI()
app.router.lifespan_context = lifespan


이렇게 수정하시면 앱이 시작될 때와 종료될 때 몽고DB의 연결 및 해제를 수행할 수 있을꺼에요..

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. 프로젝트 관련 질문에 답변 드리겠습니다.

odmantic의 설치와 관련된 오류로 보이는데요, 해당 오류는 대체로 다음과 같은 문제로 인해 발생합니다.

  1. odmantic의 버전 문제: 가장 최신 버전으로 업데이트해도 오류가 지속되는 경우, 버전 호환성 문제일 가능성이 있습니다. odmantic의 버전과 사용 중인 라이브러리, 프레임워크의 버전을 확인해 보세요.
  2. MongoDB 연결 문제: 오류 메시지에서는 mongodb 연결 문제로 언급되는데요, MongoDB 서버가 정상적으로 실행되고 있는지, 연결 정보가 올바른지 확인해야 합니다.

문제의 원인과 해결 방법을 정확히 파악하기 위해서는 보다 자세한 정보가 필요합니다. 다음 사항들을 확인해 보시면 도움이 될 수 있을 것 같아요.

  1. 오류 메시지에 나와 있는 모든 내용을 공유해 주세요. 오류 메시지와 함께 어떤 작업을 수행하고 있는지도 알려주시면 원인 파악에 도움이 될 것입니다.
  2. Python, odmantic, MongoDB의 버전 정보를 알려주세요.
  3. MongoDB에 대한 연결 정보(호스트, 포트, 인증 정보 등)가 올바른지 확인해 주세요.
  4. 만약 다른 라이브러리나 프레임워크를 함께 사용 중이라면, 해당 라이브러리와의 호환성도 확인해 보세요.

추가로, odmantic에 대한 상세한 사용 방법이나 도움이 필요한 부분이 있다면, odmantic의 공식 문서를 참고하시는 것도 좋은 방법이에요. 문제가 계속되거나 더 많은 도움을 받고 싶으시면, odmantic의 개발자 커뮤니티에 질문을 남기는 것도 좋은 방법입니다.

더 나은 답변을 제공하기 위해서는 오류에 대한 추가 정보가 필요합니다. 정확한 원인 파악을 위하여 오류 메시지와 함께 최대한 자세한 상황을 공유해 주세요. 알려진 정보에 따라 도움을 드리고 싶지만, 문제 해결을 위해서는 보다 구체적인 내용이 필요합니다. 재현 가능한 코드 또는 오류가 발생한 부분에 대한 내용도 함께 알려주시면 더욱 도움이 될 수 있어요. 수고하세요!

0

gimhansu

오류는 이게 전부입니다.

INFO: Will watch for changes in these directories: ['C:\\Users\\hs091\\OneDrive\\바탕 화면\\FastAPI']

INFO: Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)

INFO: Started reloader process [14892] using WatchFiles

Process SpawnProcess-1:

Traceback (most recent call last):

File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap

self.run()

File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 108, in run

self._target(*self._args, **self._kwargs)

File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started

target(sockets=sockets)

File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 61, in run

return asyncio.run(self.serve(sockets=sockets))

File "C:\Users\hs091\anaconda3\lib\asyncio\runners.py", line 44, in run

return loop.run_until_complete(main)

File "C:\Users\hs091\anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete

return future.result()

File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 68, in serve

config.load()

File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\config.py", line 467, in load

self.loaded_app = import_from_string(self.app)

File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string

module = importlib.import_module(module_str)

File "C:\Users\hs091\anaconda3\lib\importlib\__init__.py", line 127, in import_module

return bootstrap.gcd_import(name[level:], package, level)

File "<frozen importlib._bootstrap>", line 1030, in gcdimport

File "<frozen importlib._bootstrap>", line 1007, in findand_load

File "<frozen importlib._bootstrap>", line 986, in findand_load_unlocked

File "<frozen importlib._bootstrap>", line 680, in loadunlocked

File "<frozen importlib._bootstrap_external>", line 850, in exec_module

File "<frozen importlib._bootstrap>", line 228, in callwith_frames_removed

File "C:\Users\hs091\OneDrive\바탕 화면\FastAPI\app\main.py", line 5, in <module>

from app.models import mongodb

File "C:\Users\hs091\OneDrive\바탕 화면\FastAPI\app\models\__init__.py", line 2, in <module>

from odmantic import AIOEngine

File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\__init__.py", line 1, in <module>

from .bson import ObjectId

File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\bson.py", line 11, in <module>

from pydantic.datetime_parse import parse_datetime

File "C:\Users\hs091\anaconda3\lib\site-packages\pydantic\_migration.py", line 295, in wrapper

raise PydanticImportError(f'`{import_path}` has been removed in V2.')

pydantic.errors.PydanticImportError: pydantic.datetime_parse:parse_datetime has been removed in V2.

For further information visit https://errors.pydantic.dev/2.1.1/u/import-error

 

또한 python 버전은 3.9.7

odmantic 버전은 0.9.27

몽고 MongoDBCompass 입니다 mongodb-compass-1.39.0-win32-x64.exe

 

대규모 크롤링 시 동시 요청 수 제어 방법

0

94

2

AWS LighSail 접근 불가

0

131

1

강의상의 readme와 배포되어 있는 것이 다른 것 같아요

0

96

1

book_scraper.py 에서 import get_secret 관련 질문

0

98

1

ThreadPoolExecutor 중간에 멈추는 법

0

291

1

몽고Db 기초 질문

0

194

1

async await 문법 질문

0

237

1

멀티 스레딩 질문..

0

193

1

교안 제공은 안되나요?

0

227

1

TypeError: field Config is defined without type annotation

0

256

1

RuntimeWarning: Enable tracemalloc to get the object allocation traceback

0

1705

1

jinja2templates

0

244

1

몽고DB 설정 관련 질문

0

242

1

비동기 함수를 동기적인 실행으로 만드는 부분 질문입니다

1

307

2

proxy 사용 질문

0

261

1

AWS Lightsail SSL handshake failed 오류 문의드립니다.

0

490

1

동시성과 병렬성

0

324

1

python select linter ? 오류

1

739

2

수업질문

1

351

1

response 객체에서 키값으로 조회 시 KeyError 발생

0

568

1

from config import get_secret 질문

0

384

1

파이썬 코루틴활용 영상 질문

0

278

1

가상환경 설정 질문

0

316

1

pydantic import error

0

1225

2