starter.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #!/usr/bin/env python3
  2. import os
  3. import sys
  4. import subprocess
  5. def main():
  6. """
  7. 启动 FastAPI 应用,根据环境选择不同参数:
  8. - DEV: 热重载,单进程
  9. - PROD: 多进程,高性能 uvloop + httptools
  10. """
  11. env = os.getenv("ENV", "DEV").upper() # 默认开发环境
  12. host = "0.0.0.0"
  13. port = "8888"
  14. app_module = "app.main:app"
  15. base_cmd = ["uvicorn", app_module, "--host", host, "--port", port]
  16. if env == "DEV":
  17. print("启动开发环境(热重载)...")
  18. base_cmd += ["--reload", "--workers", "1"]
  19. elif env == "PROD":
  20. print("启动生产环境(多进程 + 高性能)...")
  21. base_cmd += ["--workers", str(os.cpu_count()), "--loop", "uvloop", "--http", "httptools"]
  22. else:
  23. print(f"未知环境 {env},使用默认开发配置")
  24. base_cmd += ["--reload", "--workers", "1"]
  25. print("执行命令:", " ".join(base_cmd))
  26. print(f"Swagger UI: http://{host}:{port}/docs")
  27. print(f"ReDoc UI: http://{host}:{port}/redoc")
  28. subprocess.run(base_cmd)
  29. if __name__ == "__main__":
  30. main()