본문 바로가기

전체 글

(68)
의존성 주입 - 2 의존성 주입 - 1에서와 같이 작성된 func_params가 반환하는 것은 dict 형태의 데이터 타입니다. 따라서 q["q"]에 대해서는 접근이 되지만 q.q는 접근이 되지 않습니다. 값에 조금 더 편하게 접근을 하기 위해서 class 형태로 값을 저장해서 접근하는 방법이 있습니다. 의존성 주입 - 1 의존성 주입은 코드의 재사용성을 높여주고, 반환하는 객체의 사용을 쉽게한다는 장점이 있습니다. 반환하는 객체의 사용을 쉽게하는 것은 객체가 생성이 되는 과정은 관심이 없고, 그냥 사용 kbgw2001.tistory.com 클레스로 접근하는 형태의 main.py는 코드는 다음과 같습니다. import uvicorn from typing import Optional from fastapi import Fas..
Failed to initialize NVML: Unknown Error 처음에 GPU로 도커 컨테이너를 시작하면 제대로 작동하고 도커에 모든 GPU가 표시됩니다. 그런데 사용한지 몇 시간이 지나면 Docker에서 GPU를 사용할 수 없게 됩니다. nvidia-smi "Failed to initialize NVML: Unknown Error" nvidia-smi 명령어 사용시 다음과 같이 Failed to initialize NVML: Unknown Error가 발생합니다. 하지만 호스트 컴퓨터에는 nvidia-smi가 있는 GPU가 모두 표시가 잘 됩니다!! 이런 경우에 해결 방법은 다음과 같습니다. 1. 호스트 컴퓨터에소 daemon을 reload합니다. sudo systemctl daemon-reload 2. daemon.json 파일 setting sudo nano /..
의존성 주입 - 1 의존성 주입은 코드의 재사용성을 높여주고, 반환하는 객체의 사용을 쉽게한다는 장점이 있습니다. 반환하는 객체의 사용을 쉽게하는 것은 객체가 생성이 되는 과정은 관심이 없고, 그냥 사용만 하고 싶을 때 유용합니다. 아래 main.py로 코드를 작성해 봅시다. import uvicorn from typing import Any, Optional, Dict from fastapi import FastAPI, Depends app = FastAPI() items = ({"name":"Foo"}, {"name":"Bar"}, {"name":"Baz"}) # 홈페이지의 모든 글을 보는 것이 아닌 일부만 볼때, 10개 보기 20개 보기 등등 # q: 키워드 검색 async def func_params( q: Opti..
에러처리 어떤 프로그래밍 언어를 사용하던 에러가 발생합니다. try문을 이용하는 것도 한 가지 방법이지만 좋은 방법은 아닙니다. 만약 해당 에러가 발생하는 모든 코드에 대해 try문을 작성해야 하고, 이는 다시 중복 코드 사용으로 이어집니다. 에러 처리를 본격적으로 다루기 전에 에러를 일부러 발생시켜 봅시다. 아래와 같이 main.py를 작성을 해봅시다. import uvicorn from fastapi import FastAPI, HTTPException, status app = FastAPI() users = {0101 1: {"name": "Fast"}, 2: {"name": "Campus"}, 3: {"name": "API"}, } @app.get("/users/{user_id}") async def ge..
파일처리-2 파일처리-1에서처럼 하면 파일의 형식을 알 수 없습니다. 파일처리 - 1 아래 library가 설치가 되어져 있지 않다면 설치해주세요 ! $ pip install python-multipart 파일 처리를 하기 위한 main.py를 다음과 같이 작성해 봅시다! import uvicorn from fastapi import FastAPI, File app = FastAPI() @app kbgw2001.tistory.com 그래서 따로 파일 형식에 대해서 알 수 있도록 FastAPI에서 제공하는 방법이 있습니다. 바로 UploadFile을 이용하는 것입니다. 다음과 같이 main.py를 작성해 봅시다. #UploadFile 이용하기 import uvicorn from tempfile import NamedT..
파일처리 - 1 아래 library가 설치가 되어져 있지 않다면 설치해주세요 ! $ pip install python-multipart 파일 처리를 하기 위한 main.py를 다음과 같이 작성해 봅시다! import uvicorn from fastapi import FastAPI, File app = FastAPI() @app.post("/file/size") def get_filesize(file: bytes = File(...)): return {"file_size": len(file)} if __name__ == '__main__': uvicorn.run("main:app", reload = True) FastAPI에서의 파일 처리를 하기 위해서는 아래 코드와 같이 File이라는 Class를 import를 해야합니..
Form 데이터 Form은 HTML 태그 중 하나입니다. 대개 어떤 정보를 입력 받은 "폼"에 대한 컴포넌트를 랜더링 하기 위해서 사용합니다. 그 전에 간단한 정적 파일들을 제공하는 방법에 대해서 알아보겠습니다. id와 password를 입력 받을 때, form tag를 사용합니다. 보통 웹에서 정적 파일이라 하면 단순 이미지 뿐만 아니라 html, js, css 등을 포함합니다. 브라우저는 서버에 요청을 하고, 정적 파일들을 다운로드 합니다. FastAPI는 API에 특화되어 있지만, 당연히 정적 파일도 지원을 합니다. static 이라는 폴더를 생성한 뒤 생성된 static 폴더 안에 login.html 파일을 생성합니다. Let me in. input 태그에서는 name의 값이 form의 매개변수가 됩니다. imp..
RDB 연동 - 4 RDB 연동 - 1 RDB 연동 - 1 RDB는 관계형 데이터 베이스의 약어입니다. 전통적으로 많이 사용하는 DBMS입니다. 즉, 데이터 베이스라고 합니다. python에서 DB 즉, 데이터 베이스를 다루기 위해서는 ORM(Object Relation Mapper)라는 것 kbgw2001.tistory.com RDB 연동 - 2 RDB 연동 - 2 RDB 연동 - 1 (tistory.com) RDB 연동 - 1 RDB는 관계형 데이터 베이스의 약어입니다. 전통적으로 많이 사용하는 DBMS입니다. 즉, 데이터 베이스라고 합니다. python에서 DB 즉, 데이터 베이스를 다루기 위해 kbgw2001.tistory.com RDB 연동 - 3 RDB 연동 - 3 RDB 연동 - 1 RDB 연동 - 1 RDB는..