티스토리 뷰
반응형
✅ 기본 구성
- 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
- laravel 테스트
- 비동기
- uniqid
- Laravel
- 설치
- privatechannel
- jp:a
- call_user_func
- PYTHON
- ob_get_contents
- createfromformat
- swagger
- wsl
- reflectionclass
- WSL2
- laravel 11
- mysql
- eloquent
- php
- laravel 12
- flask
- facades
- researcher
- eclipse
- array_combine
- 명령어
- fromArray
- ubuntu
- curl_multi_init
- 설정
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함