본문 바로가기

FastAPI

(30)
퀴즈봇 만들기 - 3 app이라는 folder 안에는 config.py, datanase.py, main.py, models.py 이렇게 4개의 .py파일로 구성되어져 있고, lib에는 telegram.py와 telegram api를 활용하기 위한 .env 파일로 구성되어져 있습니다. 우선 제가 사용한 환경의 requirements.txt입니다. altair==5.2.0 annotated-types==0.6.0 anyio==3.7.1 attrs==23.2.0 bcrypt==4.1.2 blinker==1.7.0 cachetools==5.3.3 certifi==2024.2.2 cffi==1.16.0 charset-normalizer==3.3.2 click==7.1.2 cryptography==3.4.7 defusedxml==0...
퀴즈봇 만들기 - 2 텔레그램으로 퀴즈 봇을 만들 예정입니다. 우선, 퀴즈 봇을 만들기 전에 텔레그램으로 봇을 만들어 보겠습니다 !! 텔레그램에 봇을 만들기 위해서 우선 다음과 같은 준비사항들이 필요합니다. 텔래그램 가입 및 설치(스마트폰) 개발 편의를 위해 데스크탑에도 설치 봇파더를 이용해 봇 생성 1.텔래그램 가입 및 설치(스마트폰) 텔래그램 가입은 스마트폰으로 진행하는 것이 가장 수월했습니다 !! 구글 playstore에서 다운 받아 진행해 주시면 됩니다. 2.개발 편의를 위해 데스크탑에도 설치 스마트폰을 사용해서 가입 완료 후 링크에 접속을해서 텔레그램을 데스크탑에 설치해 줍니다! 3. 봇파더를 이용해 봇 생성 설치 및 가입이 완료 됐다면 봇 파더라는 API를 사용할 예정입니다. 봇 파더의 API 링크입니다. 이와 같..
퀴즈봇 만들기 - 1 환경 setting 하기 !! flake8과 black을 설치를 진행해보겠습니다. flake8은 린터라고 한다고합니다. 린터란 소스코드를 분석하여 의심스럽거나, 에러를 발생하기 쉬운 코드에 표시(flag)를 달아 놓는 것을 말하며, 원래는 C 언어에서 사용하던 용어였으나 지금은 다른 언어에서도 일반적으로 사용된다고 합니다. black은 Formatter 라고 합니다. 코드의 스타일을 강제로 변경을 해주는 역할을 해줍니다. black을 사용하는 이유는 바로 코드의 스타일을 통일하기 위해서 사용을 합니다. 사람 마다 코드 스타일이 다르기 때문에 black을 사용해서 이를 일치 시켜 준다고 합니다. black을 만든 곳이 PSF(Python Software Foundation)라고 하네요 !!(파이썬 제단에서..
미들웨어 - 2 미들웨어 - 1에 이어서 작성해 보겠습니다. 미들웨어 - 1에서는 fastapi에 있는 미들 웨어를 사용했는데, 이번에는 미들웨어를 직접 작성해 보겠습니다. main.py 입니다. import time from fastapi import FastAPI, Request app = FastAPI() @app.middleware("http") async def add_process_time_header(request: Request, call_next): start_time = time.time() response = await call_next(request) process_time = time.time() - start_time response.headers["X-Process-Time"] = str(pr..
미들웨어 - 1 WSGI는 파이썬으로 만든 웹 어플리케이션을 웹 서버와 연결하는 프로그램입니다. 이와 마찬가지로 미들웨어는 서버와 애플리케이션 사이를 중계하는 일종의 프로그램으로 이해하시면 됩니다. 다음은 리스트는 클라이언트 웹 서버, CGI, Web Application Server, Web Application을 구분해 보았으니 !! 참고 하시면 됩니다. Client: Firefox, Chrome, Safari, Edge 등(웹 브라우저만 클라이언트인 것은 아닙니다) Web Server: Apache, nginx, IIS 등 CGI: FastCGI, SCGI, WSGI 등 Web Application Server(WAS): Tomcat, Gunicorn, Tornado 등 Web Application: Spring ..
백그라운드 작업 - 2 백그라운드 작업 - 1에 이어서 글을 작성해 보겠습니다. 백그라운드 작업 - 1 오늘은 백그라운드 작업에 대해서 끄적여 보겠습니다 ! API에서 단순히 DB에 대한 CRUD 뿐만아니라 메일을 작성한다 던가, 로그를 작성한 다던가 크롤링을 하거나 머신 러닝과 딥러닝등 다양한 작 kbgw2001.tistory.com 이번 글에서는 백그라운드 작업에 의존성 주입을 적용해 보겠습니다. 우선, 백그라운드 작업에서 의존성 주입을 적용한 예시 main.py 입니다. import uvicorn import time from typing import Optional from fastapi import BackgroundTasks, FastAPI, Depends, status app = FastAPI() def write..
백그라운드 작업 - 1 오늘은 백그라운드 작업에 대해서 끄적여 보겠습니다 ! API에서 단순히 DB에 대한 CRUD 뿐만아니라 메일을 작성한다 던가, 로그를 작성한 다던가 크롤링을 하거나 머신 러닝과 딥러닝등 다양한 작업을 수행 할 때가 있습니다. 이런 경우, 시간이 오래 걸리기 때문에 빠르게 응답을 할 수 가 없습니다. 이때, 사용가능한 가장 쉬운 작업이 백그라운드 작업입니다. 백그라운드 작업을 하기 위해서 멀티프로세싱을 하거나 python에서는 서브 프레세스 모듈을 사용하게 됩니다. 다만, FastAPI에서는 백그라운드 작업을 하기 위해서 BackgroundTasks라는 것을 사용해서 간단하게 구현할 수 있습니다. 백그라운드에 대한 작업을 수행하기 위한 매우 간단 main.py 코드입니다. import uvicorn imp..
인증 웹 서비스들의 가장 대표적인 기능 중 하나인 인증입니다. 정말 다양한 웹 인증 방식이 존재하고 이름도 비슷해 보이입니다. OAuth, OAuth2, OpenID, OpenID Connect 등 똑같이 생겼지만 사실 다른 방식들입니다. 웹 인증 방법은 지금도 바뀌고 있습니다. 간단하게 철저히 서버 사이드 개발자 입장에서 그 역사를 간단히 훑겠습니다. 읽지 않고 다음으로 넘어가셔도 괜찮습니다 초창기에는 Form에 아이디와 비밀번호를 입력 받아 서버에 전송을 했습니다. 당연하게도 패킷을 살펴보면 그 내용이 전부 보였고 심각한 보안 이슈였습니다. 물론, SSL(TSL)을 추가한 HTTPS가 퍼져 지금은 그렇지 않습니다. SSL은 패킷을 암호화 하기 때문에 공격자는 내용을 볼 수 없습니다. 그러니 HTTPS를 사..