๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/python

Redis and Celery

by ๋ฐ”์ฟ„๋ฆฌ 2025. 2. 12.

๊ฐœ์š”

Redis์™€ Celery์˜ ๊ด€๊ณ„๋ฅผ ์ข€ ๋” ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

์ •๋ฆฌ

Redis์™€ Celery๋Š” ๋น„๋™๊ธฐ ํƒœ์Šคํฌ ํ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐ๊ฐ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์™€ ๋ฐฑ์—”๋“œ ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•œ๋‹ค.

Celery

๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ถ„์‚ฐ ํƒœ์ŠคํŠธ ํ ์‹œ์Šคํ…œ์œผ๋กœ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Message Broker)๋ฅผ ํ†ตํ•ด ์ž‘์—… ๊ด€๋ฆฌ

  • Producer (Client)
    • ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒ„
    • Celery๊ฐ€ ์š”์ฒญ์„ ๋ฐ›์•„ Redis์— ์ž‘์—…์„ ๋“ฑ๋ก(Queue)ํ•จ
  • Broker (Redis)
    • Celery๊ฐ€ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์„ ํ(Queue) ํ˜•ํƒœ๋กœ ์ €์žฅ
    • Worker๊ฐ€ ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€ ์ž‘์—…์„ ๊ฐ€์ ธ๊ฐ€์„œ ์‹คํ–‰
  • Worker (Celery Worker)
    • Redis์—์„œ ์ž‘์—…์„ ๊บผ๋‚ด ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ Worker๊ฐ€ ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅ (๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ)
  • Backend (Redis)
    • Celery๊ฐ€ ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ
    • AsyncResult(task_id).result๋กœ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

 

Redis + Celery ๋™์ž‘ ํ๋ฆ„

1๏ธโƒฃ ์‚ฌ์šฉ์ž๊ฐ€ FastAPI ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ

  • Celery๊ฐ€ ์ž‘์—…์„ ์ƒ์„ฑํ•˜๊ณ  Redis์— ๋“ฑ๋ก (Producer → Broker)
  • Redis ๋‚ด๋ถ€์— ๋Œ€๊ธฐ ์ค‘์ธ Task Queue๊ฐ€ ์ƒ๊น€ (task id๋ฅผ celery-task-id-12345๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž)

2๏ธโƒฃ Celery Worker๊ฐ€ Redis์—์„œ ์ž‘์—…์„ ๊ฐ€์ ธ์™€ ์‹คํ–‰

  • Celery Worker๊ฐ€ Redis์—์„œ celery-task-id-12345๋ฅผ ๊บผ๋‚ด์–ด ์‹คํ–‰
  • Redis์—์„œ ์‹คํ–‰ ์ค‘์ธ ์ž‘์—… ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ

3๏ธโƒฃ ์ž‘์—… ์‹คํ–‰ ์™„๋ฃŒ ํ›„ ๊ฒฐ๊ณผ๋ฅผ Redis์— ์ €์žฅ

ํฌ๋กค๋ง ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ Redis์— ์ €์žฅํ•จ

→ ์ด์ œ AsyncResult(task_id).result๋ฅผ ํ†ตํ•ด FastAPI์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค

 

Redis + Celery ์„ค์ •

Celery์™€ Redis๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ ค๋ฉด broker์™€ backend๋ฅผ Redis๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

celery_app = Celery(
    "tasks",
    broker="redis://localhost:6379/0",  # Redis๋ฅผ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋กœ ์‚ฌ์šฉ
    backend="redis://localhost:6379/0"  # Redis๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉ (๊ฒฐ๊ณผ ์ €์žฅ)
)

 

โœ… Redis๋Š” Celery์˜ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค + ๊ฒฐ๊ณผ ๋ฐฑ์—”๋“œ ์—ญํ• 

โœ… Celery๋Š” Redis๋ฅผ ์ด์šฉํ•ด ๋น„๋™๊ธฐ ํƒœ์Šคํฌ๋ฅผ ๊ด€๋ฆฌ

โœ… FastAPI → Celery → Redis → Worker → Redis → FastAPI ํ๋ฆ„์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.