[python] FastAPI에서 백그라운드 작업 처리하기

FastAPI는 웹 애플리케이션을 만들기 위한 빠르고, 간단하며, 현대적인 방법을 제공하는 웹 프레임워크입니다. 이 프레임워크를 사용하여 백그라운드에서 비동기 작업을 처리하는 방법에 대해 알아보겠습니다.

백그라운드 작업 처리

FastAPI에서 비동기 백그라운드 작업을 처리하는 가장 간단한 방법은 백그라운드 태스크에 작업을 추가하는 것입니다. 백그라운드 태스크는 FastAPI의 BackgroundTasks 클래스를 사용하여 추가할 수 있습니다.

from fastapi import BackgroundTasks, FastAPI
import time

app = FastAPI()

def process_background_task(message: str):
    time.sleep(5)
    print(f"Background task processing: {message}")

@app.post("/send-notification/{message}")
async def send_notification(message: str, background_tasks: BackgroundTasks):
    background_tasks.add_task(process_background_task, message)
    return {"message": "Notification sent in the background"}

위의 예제에서 send_notification 핸들러 함수는 BackgroundTasks를 매개변수로 사용하여 백그라운드 작업을 추가합니다. 이를 통해 웹 요청 처리 속도를 높일 수 있습니다.

외부 작업 처리

FastAPI는 외부 작업을 처리하기 위해 백그라운드 태스크를 사용할 수 있습니다. 대부분의 외부 작업 처리는 비동기적으로 실행되어야 하며, 이는 FastAPI에서 간단하게 처리될 수 있습니다.

from fastapi import BackgroundTasks, FastAPI
import time
import httpx

app = FastAPI()

def process_external_task():
    with httpx.Client() as client:
        response = client.get("https://jsonplaceholder.typicode.com/posts/1")
        print(response.json())

@app.post("/process-external-task")
async def trigger_external_task(background_tasks: BackgroundTasks):
    background_tasks.add_task(process_external_task)
    return {"message": "External task processing triggered"}

위의 예제에서 trigger_external_task 핸들러 함수는 외부 작업을 트리거하고, 백그라운드 태스크를 사용하여 비동기적으로 처리합니다.

결론

FastAPI를 사용하면 백그라운드에서 비동기 작업을 간단하게 처리할 수 있습니다. 이를 통해 웹 애플리케이션의 응답 시간을 최적화하고, 사용자 경험을 향상시킬 수 있습니다.

위의 예제 코드를 통해 FastAPI에서 백그라운드 작업을 처리하는 방법을 알아보았습니다. FastAPI를 사용하여 비동기 작업 처리를 간편하게 구현할 수 있으며, 이는 모던하고 빠르게 웹 애플리케이션을 개발하는 데 도움이 될 것입니다.

참고 문헌: