增加celery任务队列,任务持久化(服务重启不丢)、支持多 Worker 水平扩展、失败自动重试
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
from celery import Celery
|
||||
|
||||
load_dotenv()
|
||||
|
||||
redis_host = os.getenv("REDIS_HOST", "localhost")
|
||||
redis_port = os.getenv("REDIS_PORT", "6379")
|
||||
redis_password = os.getenv("REDIS_PASSWORD", "")
|
||||
redis_db = os.getenv("REDIS_DB", "0")
|
||||
|
||||
if redis_password:
|
||||
broker_url = f"redis://:{redis_password}@{redis_host}:{redis_port}/{redis_db}"
|
||||
else:
|
||||
broker_url = f"redis://{redis_host}:{redis_port}/{redis_db}"
|
||||
|
||||
app = Celery(
|
||||
"moldinsight",
|
||||
broker=broker_url,
|
||||
backend=broker_url,
|
||||
include=["celery_tasks"],
|
||||
)
|
||||
|
||||
app.conf.update(
|
||||
task_serializer="json",
|
||||
result_serializer="json",
|
||||
accept_content=["json"],
|
||||
task_acks_late=True,
|
||||
worker_prefetch_multiplier=1,
|
||||
task_track_started=True,
|
||||
task_soft_time_limit=1800,
|
||||
task_time_limit=2100,
|
||||
broker_connection_retry_on_startup=True,
|
||||
)
|
||||
Reference in New Issue
Block a user