티스토리 뷰
반응형
✅ 기본 구성
- Flask 앱 생성
- Celery 구성
- 작업(Task) 정의
- 비동기 호출
🔧 1. 설치
pip install flask celery redis
Redis를 브로커로 사용 (RabbitMQ도 가능)
📦 2. 프로젝트 구조 예시
myapp/
├── app.py
├── celery_worker.py
└── tasks.py
🧩 3. 코드 예시
app.py – Flask 앱
from flask import Flask, request, jsonify
from tasks import long_task
app = Flask(__name__)
@app.route('/run-task', methods=['POST'])
def run_task():
task = long_task.delay()
return jsonify({'task_id': task.id}), 202
if __name__ == '__main__':
app.run(debug=True)
tasks.py – Celery 작업 정의
from celery import Celery
import time
celery = Celery('tasks', broker='redis://localhost:6379/0')
@celery.task
def long_task():
print("Starting long task...")
time.sleep(10) # Simulate long task
return "Task completed!"
celery_worker.py – 워커 실행용 스크립트
from tasks import celery
# 콘솔에서 실행할 때: celery -A celery_worker.celery worker --loglevel=info
▶️ 실행 방법
- Redis 서버 실행
- Celery 워커 실행
celery -A celery_worker.celery worker --loglevel=info
- Flask 앱 실행
python app.py
- API 요청
curl -X POST http://localhost:5000/run-task
📌 참고사항
- .delay()는 비동기 호출입니다. .get()을 쓰면 동기적으로 결과를 기다립니다.
- 프로덕션에서는 Flask와 Celery를 분리 배포하고, Flower 등으로 모니터링할 수 있습니다.ㅍㅍㅍㅍㅍㅍㅍㅍㅍㅍㅍ
반응형
'배움 > PYTHON' 카테고리의 다른 글
우분투 Flask, Mysql 설치 (0) | 2025.05.22 |
---|---|
Flask Framework (0) | 2025.05.15 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- WSL2
- #php
- php
- 비동기
- swagger
- Reverb
- PYTHON
- facades
- flask
- strict_types
- Gradel
- mysql
- reflectionclass
- laravel 11
- ob_get_contents
- 근로·자녀 장려금
- jp:a
- 아이쿠카
- laravel 12
- 설치
- ubuntu
- laravel 테스트
- wsl
- researcher
- 명령어
- #collect
- 설정
- Laravel
- privatechannel
- createfromformat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함