ValidationError가 valueerror보다 인스턴스 생성하기가 쉽지 않기 때문에 valueerror를 사용하셨다고 말씀하신 부분이 있는데, 어떤 부분의 어려움이 있는 것인지 좀 더 자세히 알고 싶어 질문을 드립니다. 검색으로 해당 부분에 대한 내용을 찾아 보려 했으나 잘 이해하지 못한 상태인 제가 선정할 수 있는 검색어들 자체가 모호하여 정확한 결과를 얻기가 힘들었습니다.
안녕하세요 강사님 강의 열심히 잘 듣고 있습니다. 덕분에 FastAPI에 대한 재미를 더 많이 가지고 있어 감사할 따름입니다. lifespan 적용하신 강의 관련해서 질문이 있습니다. 저는 현재 환경을 강의 내용과 다르게 진행하고있습니다. mysql이 아닌 postgresql로 진행하고 있고, postgresql + asyncpg를 이용하여 비동기 처리를 하고있습니다. lifespan 부분을 적용 시 아래 오류가 발생되고있습니다. Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x00000257982897B0>> Traceback (most recent call last): File "D:\personnel\Python\fastapi\fastapi_pguide-main\fastapi_pguide-main\AsyncDB_Handling\.venv\lib\site-packages\sqlalchemy\pool\ base.py ", line 374, in close connection self._ dialect.do _terminate(connection) File "D:\personnel\Python\fastapi\fastapi_pguide-main\fastapi_pguide-main\AsyncDB_Handling\.venv\lib\site-packages\sqlalchemy\dialects\postgresql\ asyncpg.py ", line 1117, in do_terminate dbapi_connection.terminate() File "D:\personnel\Python\fastapi\fastapi_pguide-main\fastapi_pguide-main\AsyncDB_Handling\.venv\lib\site-packages\sqlalchemy\dialects\postgresql\ asyncpg.py ", line 910, in terminate self._connection.terminate() File "D:\personnel\Python\fastapi\fastapi_pguide-main\fastapi_pguide-main\AsyncDB_Handling\.venv\lib\site-packages\asyncpg\ connection.py ", line 1515, in terminate self._abort() File "D:\personnel\Python\fastapi\fastapi_pguide-main\fastapi_pguide-main\AsyncDB_Handling\.venv\lib\site-packages\asyncpg\ connection.py ", line 1567, in _abort self._protocol.abort() File "asyncpg\\protocol\\protocol.pyx", line 608, in asyncpg.protocol.protocol.BaseProtocol.abort File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\asyncio\selector_ events.py ", line 686, in abort self._force_close(None) File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\asyncio\selector_ events.py ", line 737, in force close self._ loop.call _soon(self._call_connection_lost, exc) File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\asyncio\base_ events.py ", line 753, in call_soon self._check_closed() File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\asyncio\base_ events.py ", line 515, in check closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <asyncpg.connection.Connection object at 0x00000257982897B0>>, which will be terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle. sys:1: SAWarning: The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <asyncpg.connection.Connection object at 0x00000257982897B0>>, which will be terminated. Please ensure that SQLAlchemy pooled connections are returned to the pool explicitly, either by calling ``close()`` or by using appropriate context managers to manage their lifecycle. 위와 같은 오류가 발생되고 있습니다. 방법을 찾아보려 gpt에게 문의도 해봤지만 강의 내용과 동일하거나 또는 starting, shutting (구 FastAPI)방식을 알려주고 있습니다. 나름 응용을 해보겠다고 진행한 건데.. 번거로운 질문 드려 죄송합니다.ㅜㅜ 제가 구성한 환경은 이와 같이 진행하였습니다. 참고부탁드리겠습니다. python =="^3.10" fastapi == "0.115.4" uvicorn == "0.32.0" python-multipart == "0.0.17" python-dotenv == "1.0.1" jinja2 == "3.1.4" sqlalchemy == "2.0.36" psycopg == {extras = ["binary", "pool"], version = "^3.2.3"} asyncpg == "^0.30.0" aiofiles == "24.1.0" 감사합니다.
안녕하세요, Redis Pub/Sub 수강 중 위와 같이 메시지 브로커에 문제가 있는 것 같은데, 백엔드 지식이 부족해서 정확히 어떤 부분에서부터 원인을 찾아야할지 모르겠습니다. 서버/컨테이너 재시작 해봤는데 동일한 걸로 봐서 다른 문제인 것 같아서 도움 요청드립니다. https://github.com/wozlsla/fastapi-async/blob/prac/src/shared/message_broker.py
강의 정말 도움 많이 되었습니다!! 강의 내용 중에 동시성인지 병렬성인지 헷갈리는게 있어 질문드립니다..! 7:35에 일반 def 함수 라우터로 작성한 ThreadPool(병렬) 방식은 매번 요청시 ThreadPool에서 유휴 Tread를 찾아 동작하고 i/o wait가 발생할때 context switch를 해가면서 작업하는 것으로 이해했는데...이게 맞다면..! 완벽한 병렬성이 아니라 동시에 작업하는 것 처럼 보이는 동시성으로 동작하는 건가요?
안녕하세요, API와 DB 연결을 다루는 강의를 시청 중 강의 11분 50초 정도에 웹소켓 연결이 안 되는 문제가 생겨 질문 드립니다! 코드를 전부 똑같이 따라 작성하고 있음에도 왜 localhost 7071로 경로 수정 후 연결이 되지 않는지 모르겠습니다.. 해결 방안이 있을지 여쭙고 싶습니다!
안녕하세요, 강의 너무 잘 듣고 있습니다. 잘 따라가고 있던 와중 프론트 코드에 URL 상수를 지정하는 과정들을 거치고 UI가 있는 창에서 개발자 도구를 열어도 연결 완료 문구가 뜨지 않아 글 남깁니다. 저와 같은 문제로 질문 주신 커뮤니티의 다른 분께 프론트 파일과 주소를 남겨달라고 하셔서 메일로 프론트 파일과 주소를 보내드린 상태입니다. 한 번만 확인해 주신다면 감사드립니다.
안녕하세요. fastapi를 사용해서 서버를 개발하고있는데, 한가지 불편한것이 있어서 여쭤보려고 합니다. 다름이 아니라 외부에 작성해놓은 함수를 import 할 때 생기는 문제인데요. project | - src | - | - api | - | - extension | - | - exception | - | - main.py 이렇게 프로젝트 트리가 구성되어 있다고 했을때, project 경로에서 uvicorn src.main:app 으로 서버를 실행하면 ModuleNotFoundError: No module named 'extension' 이런 에러가 발생합니다. 이게 import 를 할 때 src.from extension.~ import ~ 이렇게 되어있지 않고 import 할 때, 자동으로 from extension.~ import ~ 이렇게 import가 되어서 모듈을 찾지 못해 발생하는 에러인 것 같은데요. 혹시 자동으로 임포트 할 때부터 src.from extension.~ import ~ 이렇게 소스루트부터 import 하게 하는 설정이 따로 있을까요? 하나하나 적어주기가 너무 불편해서 여쭤봅니다 ㅠ
강사님 강좌를 여러 개 보면서 너무 만족을 하던 차라 관심있던 fastapi의 목차를 자세히 보지 못하고 구매부터 했습니다. fastapi를 주로 api 서버로 많이 사용하는 것으로 알던 저는 jwt와 같은 토큰방식 로그인이 강좌에 있을 줄 알았는데, 없어서 많이 아쉬웠습니다. 차후에 이러한 강좌들이 추가될 여지가 있을지 알고 싶습니다. 꼭 vue, react가 아닌, 자바스크립트를 이용한 간단한 통신방식의 프론트와의 연동으로도 구현이 될거 같은데.. 너무 아쉬운 마음에 요청 아닌 질문을 조심스레 드려 봅니다.
안녕하세요. 강의를 듣고 혼자 프로젝트 해보고있는데 왜인지 원인을 모르겠는 오류가 생겨서 여쭤봅니다. 프로젝트를 uvicorn main:app --reload 명령어로 실행하면 무수히많은 에러 스택과 함께 아래와 같은 에러가 발생하는데요. pydantic.errors.PydanticUndefinedAnnotation: name 'Optional' is not defined Pydantic에서 에러가 나는 것 같은데, 저는 Optional을 사용하지 않고, None으로 사용하고 있는데 있는데 왜 이러는걸까요?
안녕하세요, 먼저 좋은 내용의 강의 감사합니다. 다름 아니라 강의 비디오에서 'FastAPI Form 다루기 - 01'부터 녹음 된 소리가 울림이 커서 명료하지 않게 들리는 것 같습니다. 혹시 번거로우시겠지만, 좋은 강의 경험을 위해 그 전까지의 영상과 같이 오디오를 깔끔하게 변환해주실 수 있을지 문의 드립니다. 감사합니다.
CORS 설명 주신 부분을 보면 처음 브라우저에서 request 날릴 때에는 Origin에 아무런 값이 들어가 있지 않아서 response를 받고 그 이후에 받은 html의 javascript 쪽에서 다른 요청을 보냈을 때 기존에 요청하면서 받았던 Origin 값이 같이 들어가면서 이슈가 발생한다고 말씀주셨는데, blog json data 테스트 하는 거 보면 origin이 null인데 바로 cors 에러가 나나요 ?
pdf 14_async_sqlalchemy 데이터 검색(읽기) github 링크가 잘못 연결되어있습니다. https://gist.github.com/DaveLee-fun/3ff74108d3b58f8ffb731c1ec106691e 연결되어 있는 페이지에 코드는 async 비동기 실행 코드가 아닌 그냥 sqlalchemy 코드입니다.
@app.get("/items") # 함수에 개별 인자값이 들어가 있는 경우 path parameter가 아닌 모든 인자는 query parameter # query parameter의 타입과 default값을 함수인자로 설정할 수 있음. async def read_item(skip: int = 0, limit: int = 2): return fake_items_db[skip : skip + limit] @app.get("/items_nd/") # 함수 인자값에 default 값이 주어지지 않으면 반드시 query parameter에 해당 인자가 주어져야 함. async def read_item_nd(skip: int, limit: int): return fake_items_db[skip : skip + limit] 안녕하세요 url 차이에 관해 질문드립니다. 위에 url은 "/items" 인데, 아래 url은 "/items_nd/" 으로 끝에 /가 붙어있는데요. 둘다 query params로 구성되어 있는데 위는 /로 안끝나고, 아래는 왜 /로 끝났는지 이유가 궁금합니다.
섹션 12 SQLAlchemy 검색 기본 문법 7분 54초 @app.get("/users/{user_id}") def read_user(user_id: int, db: Session = Depends(get_db)): db_users = db.query(User.username, User.email).all() if db_users == []: return {"error": "User not found"} return {"db_users": db_users} 강의 내용과 동일하게 작성하여 실행 했는데, 아래와 같은 오류가 났습니다. 구글 검색 해 봐도... 잘 모르겠어서 질문 남겨봅니다... ValueError: [ValueError('dictionary update sequence element #0 has length 6; 2 is required'), TypeError('vars() argument must have __dict__ attribute')]