您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

37 行
1.3KB

  1. import subprocess
  2. import sys
  3. import os
  4. def start_fastapi():
  5. """ 启动 FastAPI 服务 """
  6. environment = os.environ.get('environment', 'default')
  7. if environment == 'default':
  8. process = subprocess.Popen(["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"])
  9. else:
  10. process = subprocess.Popen(["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "5000"])
  11. return process
  12. def start_celery_worker():
  13. """ 启动 Celery Worker """
  14. if sys.platform == "win32":
  15. process = subprocess.Popen(["celery", "-A", "celery_app", "worker", "--loglevel=info", "-P", "solo"])
  16. else:
  17. process = subprocess.Popen(["celery", "-A", "celery_app", "worker", "--loglevel=info"])
  18. return process
  19. def start_celery_beat():
  20. """ 启动 Celery Beat,使用 RedBeat 作为调度器 """
  21. process = subprocess.Popen(["celery", "-A", "celery_app", "beat", "--scheduler", "redbeat.RedBeatScheduler", "--loglevel=info"])
  22. return process
  23. if __name__ == "__main__":
  24. # 启动 FastAPI、Celery Worker 和 Celery Beat
  25. fastapi_process = start_fastapi()
  26. celery_worker_process = start_celery_worker()
  27. celery_beat_process = start_celery_beat()
  28. # 等待子进程完成
  29. fastapi_process.wait()
  30. celery_worker_process.wait()
  31. celery_beat_process.wait()