celery_app.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from celery import Celery
  2. from celery.schedules import crontab
  3. from alien_gateway.config import settings
  4. # 创建 Celery 应用
  5. celery_app = Celery(
  6. "alien_cloud",
  7. broker=settings.REDIS_SENTINEL_URL,
  8. backend=settings.REDIS_SENTINEL_URL,
  9. include=["alien_util.tasks.contract_tasks"]
  10. )
  11. # Celery 配置
  12. celery_app.conf.update(
  13. task_serializer="json",
  14. accept_content=["json"],
  15. result_serializer="json",
  16. timezone="Asia/Shanghai",
  17. enable_utc=True,
  18. broker_transport_options={
  19. "master_name": settings.REDIS_MASTER_NAME,
  20. "sentinel_kwargs": {
  21. **({"username": settings.REDIS_SENTINEL_USERNAME} if settings.REDIS_SENTINEL_USERNAME else {}),
  22. **({"password": settings.REDIS_SENTINEL_PASSWORD} if settings.REDIS_SENTINEL_PASSWORD else {}),
  23. },
  24. "password": settings.REDIS_PASSWORD,
  25. "db": settings.REDIS_DB,
  26. },
  27. result_backend_transport_options={
  28. "master_name": settings.REDIS_MASTER_NAME,
  29. "sentinel_kwargs": {
  30. **({"username": settings.REDIS_SENTINEL_USERNAME} if settings.REDIS_SENTINEL_USERNAME else {}),
  31. **({"password": settings.REDIS_SENTINEL_PASSWORD} if settings.REDIS_SENTINEL_PASSWORD else {}),
  32. },
  33. "password": settings.REDIS_PASSWORD,
  34. "db": settings.REDIS_DB,
  35. },
  36. # 定时任务配置
  37. beat_schedule={
  38. "check-contract-expiry": {
  39. "task": "alien_util.tasks.contract_tasks.check_contract_expiry",
  40. "schedule": crontab(hour=0, minute=1), # 每天凌晨0点1分执行
  41. },
  42. },
  43. )