import subprocess import sys import os def start_fastapi(): """ 启动 FastAPI 服务 """ environment = os.environ.get('environment', 'default') if environment == 'default': process = subprocess.Popen(["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]) else: process = subprocess.Popen(["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "5000"]) return process def start_celery_worker(): """ 启动 Celery Worker """ if sys.platform == "win32": process = subprocess.Popen(["celery", "-A", "celery_app", "worker", "--loglevel=info", "-P", "solo"]) else: process = subprocess.Popen(["celery", "-A", "celery_app", "worker", "--loglevel=info"]) return process def start_celery_beat(): """ 启动 Celery Beat,使用 RedBeat 作为调度器 """ process = subprocess.Popen(["celery", "-A", "celery_app", "beat", "--scheduler", "redbeat.RedBeatScheduler", "--loglevel=info"]) return process if __name__ == "__main__": # 启动 FastAPI、Celery Worker 和 Celery Beat fastapi_process = start_fastapi() #celery_worker_process = start_celery_worker() #celery_beat_process = start_celery_beat() # 等待子进程完成 fastapi_process.wait() #celery_worker_process.wait() #celery_beat_process.wait()