|
123456789101112131415161718192021222324252627282930313233343536 |
- 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()
|