video-shuoshan/k8s/celery-deployment.yaml
zyc 6853b08fc9
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m16s
refactor: 切换 Celery broker 为火山引擎 Redis + 僵尸任务自动恢复
- Redis 从阿里云切换到火山引擎(同区域低延迟)
- delay() 失败改为 warning 日志 + 重试一次(不再静默吞异常)
- 新增 recover_stuck_tasks 定时任务,每10分钟扫描卡住的任务重新派发
- 轮询时每次 touch updated_at,防止活跃任务被误判为僵尸
- Celery worker 启用内嵌 Beat 调度器(-B 参数)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 10:26:04 +08:00

91 lines
2.5 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: celery-worker
labels:
app: celery-worker
spec:
replicas: 1
selector:
matchLabels:
app: celery-worker
template:
metadata:
labels:
app: celery-worker
spec:
imagePullSecrets:
- name: swr-secret
containers:
- name: celery-worker
image: ${CI_REGISTRY_IMAGE}/video-backend:latest
imagePullPolicy: Always
command: ["celery", "-A", "config", "worker", "--loglevel=info", "--concurrency=4", "-B"]
env:
- name: USE_MYSQL
value: "true"
- name: DJANGO_DEBUG
value: "False"
- name: DJANGO_ALLOWED_HOSTS
value: "*"
- name: DJANGO_SECRET_KEY
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: DJANGO_SECRET_KEY
# Redis
- name: REDIS_URL
value: "redis://:vAhRnAA6VMco@redis-cngzyc2r77ka16g7a.redis.ivolces.com:6379/0"
# Database (Aliyun RDS)
- name: DB_HOST
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: DB_HOST
- name: DB_NAME
value: "video_auto"
- name: DB_USER
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: DB_USER
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: DB_PASSWORD
- name: DB_PORT
value: "3306"
# TOS (from Secret)
- name: TOS_ACCESS_KEY
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: TOS_ACCESS_KEY
- name: TOS_SECRET_KEY
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: TOS_SECRET_KEY
- name: TOS_BUCKET
value: "airdrama-media"
- name: TOS_ENDPOINT
value: "https://tos-cn-beijing.volces.com"
- name: TOS_REGION
value: "cn-beijing"
- name: TOS_CDN_DOMAIN
value: "https://airdrama-media.tos-cn-beijing.volces.com"
# Seedance API (from Secret)
- name: ARK_API_KEY
valueFrom:
secretKeyRef:
name: video-backend-secrets
key: ARK_API_KEY
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"