No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

55 líneas
1.5KB

  1. from celery import Celery
  2. from config import load_config,conf
  3. from urllib.parse import quote
  4. load_config()
  5. KAFKA_BOOTSTRAP_SERVERS = conf().get("kafka_bootstrap_servers")
  6. KAFKA_TOPIC = 'topic.ai.ops.wx'
  7. KAFKA_GROUP_ID = 'ai-ops-wx'
  8. redis_host=conf().get("redis_host")
  9. redis_port=conf().get("redis_port")
  10. redis_password=conf().get("redis_password")
  11. redis_db=conf().get("redis_db")
  12. encoded_password = quote(redis_password)
  13. # 配置 Celery
  14. celery_app = Celery(
  15. "worker",
  16. broker=f"redis://:{encoded_password}@{redis_host}:{redis_port}/{redis_db}",
  17. backend=f"redis://:{encoded_password}@{redis_host}:{redis_port}/{redis_db}",
  18. include=['tasks']
  19. )
  20. # 配置 redbeat 作为 Celery Beat 调度器
  21. celery_app.conf.update(
  22. timezone="Asia/Shanghai", # 设定时区
  23. beat_scheduler="redbeat.RedBeatScheduler", # 使用 RedBeat 作为调度器
  24. redbeat_redis_url=f"redis://:{encoded_password}@{redis_host}:{redis_port}/{redis_db}" # redbeat 存储任务调度信息的 Redis
  25. ,
  26. redbeat_lock_timeout=60, # 避免多个 Beat 实例冲突
  27. beat_max_loop_interval=5 # 让 Celery Beat 每 5 秒检查一次任务
  28. )
  29. # 获取配置文件中的 redis_config、kafka_config、gewe_config
  30. redis_config = {
  31. 'host': redis_host,
  32. 'port': redis_port,
  33. 'password': redis_password,
  34. 'db': redis_db,
  35. }
  36. kafka_config = {
  37. 'bootstrap_servers': KAFKA_BOOTSTRAP_SERVERS,
  38. 'topic': KAFKA_TOPIC,
  39. 'group_id': KAFKA_GROUP_ID,
  40. }
  41. gewe_config = {
  42. 'api_url': "http://api.geweapi.com/gewe",
  43. }