Python By Amanda

Celery 分散式任務隊列:解決 Python 網頁應用的效能瓶頸

非同步處理的重型武器

當你的 Web App 需要執行耗時任務 (如發送 Email、生成 PDF 報表、或進行複雜的數據分析) 時,如果直接在 Request 中處理,使用者會感覺網頁卡住。

Celery 架構
Client (Web App) 發送任務到 Broker (通常是 Redis 或 RabbitMQ),Worker (獨立的 Python 進程) 從隊列中取出任務並在背景執行。執行結果可以存回 Backend (Redis/DB)。

這不僅提升了使用者體驗,還能透過增加 Worker 節點來水平擴展處理能力。對於需要定期抓取台股資料並更新資料庫的場景,Celery Beat 也是比 Crontab 更靈活的排程選擇。