Spaces:
Runtime error
Runtime error
| import os | |
| from celery import Celery | |
| from celery.schedules import crontab | |
| from packages.core.config import settings | |
| # 初始化 Celery 应用 | |
| # 默认使用 Redis 作为 broker 和 backend,可通过环境变量覆盖 | |
| redis_url = os.environ.get("CELERY_BROKER_URL", "redis://localhost:6379/0") | |
| celery_app = Celery( | |
| "customs_data_worker", | |
| broker=redis_url, | |
| backend=redis_url, | |
| include=["apps.worker.celery_tasks"] | |
| ) | |
| # 配置 Celery | |
| celery_app.conf.update( | |
| task_serializer="json", | |
| accept_content=["json"], | |
| result_serializer="json", | |
| timezone="UTC", | |
| enable_utc=True, | |
| task_track_started=True, | |
| task_time_limit=3600 * 2, # 任务最长执行 2 小时 | |
| worker_max_tasks_per_child=50, # 防止内存泄漏 | |
| ) | |
| # 注册定时任务 (Cron) | |
| celery_app.conf.beat_schedule = { | |
| "sync-brazil-daily": { | |
| "task": "apps.worker.celery_tasks.sync_brazil", | |
| "schedule": crontab(hour=2, minute=0), # 每天凌晨 2 点执行 | |
| }, | |
| "sync-chile-daily": { | |
| "task": "apps.worker.celery_tasks.sync_chile", | |
| "schedule": crontab(hour=3, minute=0), # 每天凌晨 3 点执行 | |
| }, | |
| "sync-extended-mock-daily": { | |
| "task": "apps.worker.celery_tasks.sync_extended_mock", | |
| "schedule": crontab(hour=4, minute=0), # 每天凌晨 4 点执行 | |
| }, | |
| } | |