묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨FastAPI 완벽 가이드
Optional체크를 어느 부분에서 해주고 하지 않아도 되는지 궁금합니다.
(강의 색션 7_8 - 14:30)안녕하세요 선생님.좋은 강의 만들어 공유해 주셔서 진심으로 감사드립니다.Pydantic 모델 초기화 과정에서 아래의 코드처럼 Optional이 설정하지 않으면 Swagger UI에서 입력 값이 null이여서 엔티티 타입 불일치로 422 에러가 발생합니다.또한, parse_user_form에서 Optional 체크를 하고 Item에서는 별도로 설정하지 않으면 같은 에러가 발생하더군요.Q) FormData 부분은 Optional 체크를 하지 않아도 되고, pydantic model에서는 반드시 Optional 체크를 해야지만 문제 없이 정상 동작하는 이유에 대한 보충 설명 부탁드려도 될까요? 주석한 부분이 기존 코드입니다. 주석한 부분으로 코드를 변경하면 에러가 발생합니다.class Item(BaseModel): name: str = Field(..., min_length=2, max_length=50) # description: str = Field(None, max_length=500) description: Optional[str] = Field(None, max_length=500) price: float = Field(..., ge=0) # tax: float = None tax: Optional[float] = None @model_validator(mode='after') def tax_must_be_less_than_price(cls, values): price = values.price tax = values.tax # if tax > price: # tax가 NoneType이라 에러가 남. if tax is not None and tax > price: raise ValueError("Tax must be less then price") return values감사합니다.
-
미해결FastAPI 완벽 가이드
rollback에 대해 질문 드려요
현재 "신규 Blog 글 생성하기 - 01" 강의를 수강 중입니다.강의 중에, 쿼리의 commit() 실패시 rollback()이 자동으로 수행된다고 말씀 하셨는데,코드상에 with를 사용한 것도 아니고, context_get_conn()의 에러 발생시 rollback() 호출도 하지 않는데rollback()이 자동으로 수행되는게 맞는가요?close를 하면 자동으로 rollback() 된다고 하시는데close는 성공시에도 호출하는 것으로 코드를 이해하고 있습니다.insert, update의 성공시에도 rollback()이 되는게 맞는지도 알고 싶습니다.
-
미해결FastAPI 완벽 가이드
Depends()에 사용되는 인자는 어떤 것들이 가능한 것인가요?
Path(), Query(), Form() 모두 Depends에 사용이 가능할까요? 물론 BaseModel에는 인자와 동일한 이름의 클래스 변수가 정의되어 있다는 가정에서 의미합니다.form의 일부 인자들만으로 구성되게 사용이 가능할까요?함수의 입력 인자로 정의된 값이, Depends에서도 중복으로 사용이 가능한가요?
-
미해결FastAPI 완벽 가이드
pydactic 5강의 ValidationError의 인스턴스에 대한 질문입니다.
ValidationError가 valueerror보다 인스턴스 생성하기가 쉽지 않기 때문에 valueerror를 사용하셨다고 말씀하신 부분이 있는데, 어떤 부분의 어려움이 있는 것인지 좀 더 자세히 알고 싶어 질문을 드립니다. 검색으로 해당 부분에 대한 내용을 찾아 보려 했으나 잘 이해하지 못한 상태인 제가 선정할 수 있는 검색어들 자체가 모호하여 정확한 결과를 얻기가 힘들었습니다.
-
미해결FastAPI 완벽 가이드
lifespan 적용 관련 문의
안녕하세요 강사님강의 열심히 잘 듣고 있습니다.덕분에 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 closeconnection 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 forceclose 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 checkclosed raise RuntimeError('Event loop is closed')RuntimeError: Event loop is closedThe 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"감사합니다.
-
미해결FastAPI 완벽 가이드
가상환경 관련 질문있스니다.
선생님 강의에서는 아나콘다를 사용하셨는데, 저는 pipenv를 사용하고싶거든요..콘다 말고 다른 가상환경을 사용해도 괜찮을까요?
-
해결됨FastAPI 완벽 가이드
ThreadPool 방식 질문드립니다
강의 정말 도움 많이 되었습니다!!강의 내용 중에 동시성인지 병렬성인지 헷갈리는게 있어 질문드립니다..!7:35에 일반 def 함수 라우터로 작성한 ThreadPool(병렬) 방식은 매번 요청시 ThreadPool에서 유휴 Tread를 찾아 동작하고 i/o wait가 발생할때 context switch를 해가면서 작업하는 것으로 이해했는데...이게 맞다면..! 완벽한 병렬성이 아니라 동시에 작업하는 것 처럼 보이는 동시성으로 동작하는 건가요?
-
미해결FastAPI 완벽 가이드
영상 문의
'FastAPI에서 StaticFiles 클래스를 이용한 정적 파일 다루기' 수업 끝에 url_for 다음시간에 알려주신다고 영상이 끝나는데, 해당 강의영상은 어디에서 볼 수 있을까요? ps. 수업 너무 알차게 잘 듣고 있습니다 :)
-
미해결FastAPI 완벽 가이드
토큰 방식 로그인에 대해 질문 드립니다.
강사님 강좌를 여러 개 보면서 너무 만족을 하던 차라관심있던 fastapi의 목차를 자세히 보지 못하고 구매부터 했습니다.fastapi를 주로 api 서버로 많이 사용하는 것으로 알던 저는 jwt와 같은 토큰방식 로그인이 강좌에 있을 줄 알았는데, 없어서 많이 아쉬웠습니다.차후에 이러한 강좌들이 추가될 여지가 있을지 알고 싶습니다. 꼭 vue, react가 아닌, 자바스크립트를 이용한 간단한 통신방식의 프론트와의 연동으로도 구현이 될거 같은데.. 너무 아쉬운 마음에 요청 아닌 질문을 조심스레 드려 봅니다.
-
미해결FastAPI 완벽 가이드
동영상 소리 건의 드립니다.
안녕하세요, 먼저 좋은 내용의 강의 감사합니다. 다름 아니라 강의 비디오에서'FastAPI Form 다루기 - 01'부터 녹음 된 소리가 울림이 커서 명료하지 않게 들리는 것 같습니다. 혹시 번거로우시겠지만, 좋은 강의 경험을 위해 그 전까지의 영상과 같이 오디오를 깔끔하게 변환해주실 수 있을지 문의 드립니다. 감사합니다.
-
미해결FastAPI 완벽 가이드
CORS 질문
CORS 설명 주신 부분을 보면 처음 브라우저에서 request 날릴 때에는 Origin에 아무런 값이 들어가 있지 않아서 response를 받고 그 이후에 받은 html의 javascript 쪽에서 다른 요청을 보냈을 때 기존에 요청하면서 받았던 Origin 값이 같이 들어가면서 이슈가 발생한다고 말씀주셨는데, blog json data 테스트 하는 거 보면 origin이 null인데 바로 cors 에러가 나나요 ?
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
pdf 14_async_sqlalchemy 데이터 검색(읽기) github 링크
pdf 14_async_sqlalchemy 데이터 검색(읽기) github 링크가 잘못 연결되어있습니다.https://gist.github.com/DaveLee-fun/3ff74108d3b58f8ffb731c1ec106691e연결되어 있는 페이지에 코드는 async 비동기 실행 코드가 아닌 그냥 sqlalchemy 코드입니다.
-
해결됨FastAPI 완벽 가이드
url 차이 질문
@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로 구성되어 있는데 위는 /로 안끝나고, 아래는 왜 /로 끝났는지 이유가 궁금합니다.
-
해결됨처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
섹션 12 SQLAlchemy 검색 기본 문법 질문
섹션 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')]
-
미해결FastAPI 완벽 가이드
Type Hint에 대한 설명 요청
동영상 음성이 너무 작습니다. 매번 따로 조절해줘야하는 번거로움이 있습니다.파이썬 문법보다는 실전적인 내용에 충실하시려는 의도는 느껴지지만 Type Hint, Decorator, Class 같은 고급문법 정도는 짚고 넘어가주시면 강의내용이 좀 더 이해가 잘 되지않을까 싶습니다.강의 초반부에 뒤에서 설명하시겠다고 하고 넘어가는 부분이 자주 있어서 강의 중반부부터 이해가 되지 않습니다. 실무적인 내용도 좋지만 최소한의 이론적인 설명도 명확하게 짚어주시면 어떨까 싶습니다.
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
Fast API 개발환경설정 자료
강의 자료 다운로드 받고 압축 풀고 확인 해 봤는데,Fast API 개발환경설정 강의에서 보여주시는 00_FASTAPI_START 설명 파일(ppt자료?)이 없습니다.혹시 파일 누락된것이 아닐까요?확인 부탁드립니다.!
-
해결됨FastAPI 완벽 가이드
WSGI, ASGI 와 미들웨어 간의 관계
안녕하세요! 강의 잘 보고 있습니다. 강의를 보는 중에 헷갈리는 개념이 있어서 질문드려요!올려주신 강의 중 미들웨어 챕터 부분을 보고 있어요. 그런데 문득 미들웨어와 uvicorn, gunicorn, hypercorn 과 같은 WSGI, ASGI 서버 간의 관계에 대해서 궁금증이 들었습니다. 보통 언어에 상관없이 웹 통신을 한다라고 하면 아래와 같은 구조로 통신한다고 볼 수 있잖아요?(DB가 있다고 가정)"""Client(Web Browser) ---> Web Server ---> Web Application Server ---> DB"""그리고 파이썬에서는 uvicorn, gunicorn 과 같은 WSGI, ASGI 서버들이 Web Server 역할을, Flask, FastAPI 와 같은 프레임워크 서버들이 Web Application Server의 역할을 한다고 알고 있습니다. 그리고 저 Web Server 요소가 미들웨어라고 정의한다고 알고 있었는데요! 그런데 FastAPI 공식문서 상에서는 미들웨어라는 것을 소개할 때, "모든 요청 또는 응답에 대해서 사전 또는 사후 처리 로직을 추가할 때 사용하는 것" 이라고 소개를 하면서 문득 "그러면 여기서 이야기하는 미들웨어랑 uvicorn, gunicorn 과는 어떤 차이점이 있는거지?" 하면서 헷갈리더라구요. 자바에서는 미들웨어라는 개념이 JVM 위에서 동작하면서 DB 연결, TCP/IP 연결 등과 같이 다른 소프트웨어(ex.애플리케이션)가 잘 동작하도록 지원해주는 소프트웨어라고 알고 있는데요! 만약 이러한 관점에서 본다면 uvicorn, gunicorn 과 같은 WSGI 또는 ASGI 서버들도 미들웨어라고 볼 수는 없는 걸까요? ChatGPT 한테 물어보았을 때는 엄연히 다른 개념이라고 하는데.. 정확히 차이점을 잘 모르겠어서요. 답변 해주시면 감사하겠습니다! (참고로 저는 파이썬으로만 오랫동안 개발해와서 자바나 다른 언어 관련해서는 잘 모를 수도 있어서 다른 언어에 대한 비유로 답변 주시면 제가 잘 이해를 못할 수도 있습니다!)
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
curl -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt 에러
세션을 실행하고 있어 curl로 실행하려고 하는데 아래와 같은 에러 메세지가 뜨네요.Invoke-WebRequest : 매개 변수 이름 'c'이(가) 모호하므로 매개 변수를 처리할 수 없습니다. 일치하는 항목은 다음과 같습니다. -Credential -CertificateThumbprint -Certificate -ContentType.위치 줄:1 문자:45+ curl -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt+ ~~실행하면 위와 같은 에러메시지가 나오는데 어떻게 해결할 수 있나요? from fastapi import FastAPI,Request from fastapi.security import HTTPBasic from starlette.middleware.sessions import SessionMiddleware app=FastAPI() app.add_middleware(SessionMiddleware,secret_key="your-secret-key") @app.post("/set/") async def set_session(request:Request): request.session["username"]='smith' return {"message":"Session value"} @app.get("/get/") async def get_session(request:Request): username=request.session.get("username","Guest") return {"username":username}
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
연동된 강의안과 수업에서 하는 강의안이 달라요
인강에서 보여주는 강의안과 드라이브에서 받아보는 강의안에 다른데.. 갱신된 강의안은 어디서 얻을 수 있나요?
-
미해결FastAPI 완벽 가이드
동영상 재생 오류
FastAPI Response > JSONResponse 다루기 관련한 동영상이 검은창으로 음성만 재생됩니다. 확인 부탁 드립니다. ( 해당 강의 이후에 다 그렇게 나옵니다. - mac m1, 크롬/사파리 브라우져 사용시) 저번주에는 앱에서 저장 및 재생 기능이 안되더니 이번주에는 pc에서 안되네요 ㅜㅜ (다른 동영상은 재생이 잘 되는데 여기 동영상만 그런것 같기도 해요)