CoolFace
Apppublic

lenML/ChatTTS-Forge

sourceHugging Faceagpl-3.0updated 2y agoView on Hugging Face
301likes
launch.py109 linesDownload Raw Back to root
1import logging2import os3 4from modules.ffmpeg_env import setup_ffmpeg_path5 6try:7    setup_ffmpeg_path()8    # NOTE: 因为 logger 都是在模块中初始化,所以这个 config 必须在最前面9    logging.basicConfig(10        level=os.getenv("LOG_LEVEL", "INFO"),11        format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",12    )13except BaseException:14    pass15 16import argparse17 18import uvicorn19 20from modules.api.api_setup import setup_api_args21from modules.models_setup import setup_model_args22from modules.utils import env23from modules.utils.ignore_warn import ignore_useless_warnings24 25ignore_useless_warnings()26 27logger = logging.getLogger(__name__)28 29 30def setup_uvicon_args(parser: argparse.ArgumentParser):31    parser.add_argument("--host", type=str, help="Host to run the server on")32    parser.add_argument("--port", type=int, help="Port to run the server on")33    parser.add_argument(34        "--reload", action="store_true", help="Enable auto-reload for development"35    )36    parser.add_argument("--workers", type=int, help="Number of worker processes")37    parser.add_argument("--log_level", type=str, help="Log level")38    parser.add_argument("--access_log", action="store_true", help="Enable access log")39    parser.add_argument(40        "--proxy_headers", action="store_true", help="Enable proxy headers"41    )42    parser.add_argument(43        "--timeout_keep_alive", type=int, help="Keep-alive timeout duration"44    )45    parser.add_argument(46        "--timeout_graceful_shutdown",47        type=int,48        help="Graceful shutdown timeout duration",49    )50    parser.add_argument("--ssl_keyfile", type=str, help="SSL key file path")51    parser.add_argument("--ssl_certfile", type=str, help="SSL certificate file path")52    parser.add_argument(53        "--ssl_keyfile_password", type=str, help="SSL key file password"54    )55 56 57def process_uvicon_args(args):58    host = env.get_and_update_env(args, "host", "0.0.0.0", str)59    port = env.get_and_update_env(args, "port", 7870, int)60    reload = env.get_and_update_env(args, "reload", False, bool)61    workers = env.get_and_update_env(args, "workers", 1, int)62    log_level = env.get_and_update_env(args, "log_level", "info", str)63    access_log = env.get_and_update_env(args, "access_log", True, bool)64    proxy_headers = env.get_and_update_env(args, "proxy_headers", True, bool)65    timeout_keep_alive = env.get_and_update_env(args, "timeout_keep_alive", 5, int)66    timeout_graceful_shutdown = env.get_and_update_env(67        args, "timeout_graceful_shutdown", 0, int68    )69    ssl_keyfile = env.get_and_update_env(args, "ssl_keyfile", None, str)70    ssl_certfile = env.get_and_update_env(args, "ssl_certfile", None, str)71    ssl_keyfile_password = env.get_and_update_env(72        args, "ssl_keyfile_password", None, str73    )74 75    uvicorn.run(76        "modules.api.worker:app",77        host=host,78        port=port,79        reload=reload,80        workers=workers,81        log_level=log_level,82        access_log=access_log,83        proxy_headers=proxy_headers,84        timeout_keep_alive=timeout_keep_alive,85        timeout_graceful_shutdown=timeout_graceful_shutdown,86        ssl_keyfile=ssl_keyfile,87        ssl_certfile=ssl_certfile,88        ssl_keyfile_password=ssl_keyfile_password,89    )90 91 92if __name__ == "__main__":93    import dotenv94 95    dotenv.load_dotenv(96        dotenv_path=os.getenv("ENV_FILE", ".env.api"),97    )98    parser = argparse.ArgumentParser(99        description="Start the FastAPI server with command line arguments"100    )101    # NOTE: 主进程中不需要处理 model args / api args,但是要接收这些参数, 具体处理在 worker.py 中102    setup_api_args(parser=parser)103    setup_model_args(parser=parser)104    setup_uvicon_args(parser=parser)105 106    args = parser.parse_args()107 108    process_uvicon_args(args)109