Python 310

[FastAPI] Lifespan - 이벤트 처리

개요2025.01.13-[FastAPI] startup, shutdown 이벤트 처리에서 FastAPI가 제공하는 on_event 데코레이터를 사용해 애플리케이션 시작 및 종료 시 처리해야 하는 작업을 정의하고 적용했다. 그런데 공식 문서에 의하면 on_event 데코레이터는 deprecated 되고, Lifespan이라는 개념으로 대체되었다고 한다.이번 글에서 Lifespan을 사용하는 방법에 대해 정리해 둔다.  LifespanLifespan은 전체 애플리케이션의 수명주기를 다루며, 애플리케이션이 시작되기 전에 실행되어야 하고, 애플리케이션이 종료될 때 실행되어야 하는 작업을 정의할 수 있게 한다. 주로 전체 애플리케이션에 사용해야 하는 자원, 요청 간 공유 자원, 정리해야 하는 자원을 설정하는 데 ..

Python 2025.01.24

[FastAPI] startup, shutdown 이벤트 처리

개요여타 다른 애플리케이션처럼 FastAPI 애플리케이션 또한 처음 실행을 시작할 때 필요한 설정값을 읽는다던가, 실행을 종료할 때 데이터를 정리하는 등의 작업이 필요할 수 있다. FastAPI는 이러한 종류를 작업을 지원하기 위해 @FastAPI.on_event라는 데코레이터를 제공한다. 이번 글에서 사용 방법을 간단히 알아본다.  @FastAPI.on_eventFastAPI.on_event 데코레이터는 애플리케이션이 시작하기 전이나 종료될 때 실행되어야 하는 이벤트 핸들러를 정의한다. startup, shutdown 이벤트에 대한 핸들러만 정의할 수 있으며, 이벤트 핸들러는 두 개 이상 정의할 수 있다. 참고로 startup 이벤트 핸들러의 경우 모든 이벤트 핸들러가 완료될 때까지 애플리케이션은 요청..

Python 2025.01.23

[Python] Async - signal 처리하기

개요2025.01.09-[Python] signal - 프로그램 종료 처리에서 Python 프로그램의 프로그램 종료 등의 처리를 위한 signal 모듈 사용방법에 대해 알아보았다. 그런데 이제는 비동기로 프로그래밍된 Python 프로그램의 종료 시에 처리해야 할 작업이 생겼다. 이번 글에서는 Python async를 사용할 때에 signal 수신 및 처리 방법을 알아보자.   loop.add_signal_handlerPython은 asyncio라는 고수준 라이브러리로 비동기 프로그래밍을 쉽게 할 수 있지만, signal 처리와 같은 세부 제어를 하기 위해서는 이벤트 루프를 직접 다루어야 한다.이벤트 루프는 시그널 처리를 위한 add_signal_handler라는 함수를 제공한다.loop.add_signa..

Python 2025.01.21

[Python] signal - 프로그램 종료 처리

개요2025.01.08-[Python] KeyboardInterrupt - 프로그램 종료 처리에서 키보드 입력에 의한 프로그램 종료를 처리하는 방법을 알아보았는데, 프로그램은 동작 중 예기치 않게 종료되거나 SIGTERM 등의 시그널에 의해 종료될 수도 있다. 이번 글에서는 Python 프로그램에서 시그널을 처리하는 방법을 적어둔다.   signal.signalPython의 signal 모듈의 signal 함수는 시그널을 수신받을 때 실행할 사용자 정의 처리기를 정의하고 등록할 수 있게 한다. signal.signal(signalnum, handler)매개변수로 수신받을 시그널 값과 처리한 작업이 정의된 함수 hander를 전달한다. hander는 signum(시그널 번호)과 frame(현재 스택 프레임..

Python 2025.01.20

[Python] KeyboardInterrupt - 프로그램 종료 처리

개요프로그램을 개발하다 보면 프로그램 종료 시 처리되어야 하는 몇 가지 작업이 있을 수 있다. 이번 글에서는 Python 애플리케이션을 종료시킬 때 필요한 작업을 처리할 수 있도록 하기 위한 방법 중 KeyboardInterrupt를 활용한 방법을 정리해 둔다.  KeyboardInterruptKeyboardInterrupt는 사용자가 키보드 동작(ctrl + c, SIGINT)을 사용하여 프로그램 실행을 종료할 때 발생시키는 내장 예외이다. 동작하는데 많은 시간을 필요로 하는 프로그램을 제어할 때 필요할 수 있다. KeyboardInterrupt는 예외이기 때문에 try ~ except 구문으로 처리할 수 있다.try: 작업except KeyboardInterrupt: 종료 작업다만 Keyboa..

Python 2025.01.17

[FastAPI] APIRouter - 모듈 분리

개요FastAPI 공식 문서를 보면 하나의 파일에 경로를 구성하게끔 되어있는데, 사실 애플리케이션을 개발할 때 하나의 파일에 모든 내용을 넣을 수 있는 경우는 거의 없다. FastAPI는 모듈 분리를 할 수 있도록 APIRouter라는 기능을 제공하는데, 이번 글에서는 관련 내용을 정리해 둔다.  APIRouter 정의APIRouter는 경로를 그룹화하는 데 사용하며, 애플리케이션을 구조화할 수 있게 하는 역할을 한다. 일종의 작은 FastAPI 객체라고 생각해도 된다.사용할 때는 APIRouter 클래스를 임포트 한 뒤, APIRouter 객체를 생성하고, FastAPI 객체에 대한 경로를 데코레이터로 추가했던 것과 동일한 방식으로 APIRouter 객체에 대한 경로를 데코레이터로 추가한다. 아래는 예..

Python 2024.12.16

[PyMySQL] Decimal 데이터를 python float으로 변환

개요Python에서 PyMySQL을 사용해 데이터를 조회하다 보면 다음과 같이 Decimal이라는 객체로 값을 반환받는 경우가 있다.이런 데이터를 Python float이나 double로 취급하고 싶다. 방법을 적어둔다.   Decimal데이터베이스에서 Decimal은 고정 소수점 타입으로, 실수의 값을 정확하게 표현하기 위해 사용한다. 고정 소수점 방식은 소수부의 자릿수를 고정하여 표현한다. DECIMAL(M,D)M은 소수부와 정수부를 포함한 전체 자리수를자릿수를 의미하고, D가 소수부의 자릿수를 나타낸다.  converters.conversionsPyMySQL은 conversion dictionary라는 개념으로 데이터베이스의 데이터 타입을 Python의 데이터 타입으로 변환하는 규칙을 사용하고 있다..

Python 2024.12.12

[Python] filter - iterable 조건 필터링

개요현재 Python 개발을 진행 중인데, 딕셔너리의 키가 특정 조건을 만족하는 것만 필터링하려고 한다. 적당한 방법을 찾아보다 python 내장 함수인 filter 함수에 대해 알게 되어 기록해 둔다.  filter특정 조건을 만족하는 요소들로 이루어진 iterator를 반환한다.filter(function, iterable) 바로 사용 예시를 보는 편이 이해하기 좋을 것 같다. 다음과 같은 숫자로 이루어진 리스트가 있다고 하자.numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]이 리스트에서 짝수에 해당하는 값만 추출하고 싶다. 그러면 아래와 같이 짝수인 경우가 참이 되는 함수를 정의하여 전달하면 된다.def is_even(num): return num % 2 == 0filtere..

Python 2024.12.11

[Python] Dictionary 키 삭제

개요이전에 2021.10.03-[자료 구조] 동명이인 찾기 / 딕셔너리에서 딕셔너리 내의 특정 키 값을 삭제하는 방법을 적어두었었다. 그런데 삭제하려는 키의 값이 딕셔너리에 항상 있을 거라는 보장이 없는 경우도 있을 수 있다.관련해서 딕셔너리 내의 키 값을 안전하게 삭제하는 방법을 몇 가지 더 알아본다.   DEL먼저 기존에 알았던 방법을 다시 적어둔다. del 키워드를 사용하면 특정 변수나 딕셔너리 내의 키 값을 삭제할 수 있다. test_data = {k:k for k in range(5)}del test_data[0]  poppop 함수를 사용하면 딕셔너리에서 키 값을 삭제하면서 값을 반환받을 수 있다.test_data = {k:k for k in range(5)}test_data.pop(4)이 때..

Python 2024.12.10

[Python] hashlib - 해시 함수 다루기

HashingHashing이란 임의 길이의 데이터를 고정된 길이의 데이터로 변화시켜 저장하는 것을 말한다.해싱을 수행하는 함수나 알고리즘을 해시 함수, 해시 알고리즘이라 하고, 해시 함수의 결과를 해시 값, 해시 코드, 해시 체크섬 또는 해시라고 일컫는다.해시는 빠른 데이터 검색을 위한 해시 테이블이라는 자료 구조에 사용하거나, 해시 값으로는 원문을 알아내기 힘들다는 점을 이용해 값을 암호화하는 데 사용할 수도 있다. 또는 전송된 데이터의 무결성을 확인하는 데 사용하기도 한다.  hashlibPython에서 해시 함수를 사용할 때는 hashlib라는 모듈을 사용한다. hashlib에는 암호화 알고리즘인 SHA1, SHA224, SHA256, MD5 등등의 여러 알고리즘을 포함하고 있다.별도 설치 없이 바..

Python 2024.12.09
1 2 3 4 5 6 7 8 ··· 31