Search

웹 애플리케이션에서 비동기 작업 처리

카테고리
Python
태그
Web
비동기
생성 일시
2023/02/16
상황: 웹 애플리케이션에서 시간이 오래 걸리는 작업을 처리하려고 합니다. 이러한 작업은 사용자가 요청을 보낸 후 즉시 결과를 반환받을 수 없으며, 서버에서 백그라운드로 처리해야 하는 작업입니다. 이를 위해 비동기 작업 처리 방법이 필요합니다.
해결방안: Celery와 Redis를 사용하여 웹 애플리케이션에서 비동기 작업을 처리하는 방법을 구현합니다.
1.
필요한 라이브러리 설치 Python 환경에서 Celery와 Redis 라이브러리를 사용하여 비동기 작업 처리를 구현합니다. 먼저 필요한 라이브러리를 설치합니다.
bashCopy code pip install celery[redis] redis
Plain Text
복사
2.
Celery 설정 및 작업 정의 웹 애플리케이션에서 사용할 Celery 인스턴스를 설정하고, 시간이 오래 걸리는 작업을 정의합니다.
pythonCopy code # tasks.py from celery import Celery app = Celery('tasks', broker='redis://localhost:6379/0') @app.task def long_running_task(x, y): # 시간이 오래 걸리는 작업 구현 import time time.sleep(10) return x + y
Python
복사
3.
웹 애플리케이션에서 비동기 작업 실행 웹 애플리케이션에서 사용자가 시간이 오래 걸리는 작업을 요청할 때, 비동기로 해당 작업을 실행하고 결과를 반환합니다.
pythonCopy code # app.py from flask import Flask, jsonify from tasks import long_running_task app = Flask(__name__) @app.route('/long_task') def long_task(): task = long_running_task.delay(1, 2) return jsonify({'task_id': task.id}) @app.route('/result/<task_id>') def get_result(task_id): task = long_running_task.AsyncResult(task_id) if task.ready(): return jsonify({'result': task.result}) else: return jsonify({'status': 'processing'}) if __name__ == '__main__': app.run()
Python
복사
4.
웹 애플리케이션 실행 및 비동기 작업 테스트 웹 애플리케이션을 실행하고, 사용자가 시간이 오래 걸리는 작업을 요청하면, 서버에서 비동기로 해당 작업을 처리하고 결과를 반환합니다.
이러한 방법으로 웹 애플리케이션에서 비동기 작업을 처리할 수 있습니다. 이를 통해 사용자에게 더 나은 사용자 경험을 제공할 수 있습니다.