美文网首页fastapi
宝塔supervisor+gunicorn+uvicorn部署f

宝塔supervisor+gunicorn+uvicorn部署f

作者: 壹明_c63f | 来源:发表于2020-10-22 17:27 被阅读0次

    之前用过supervisor+uvicorn部署过fastapi 但那时superviosr是手动安装的并非用的宝塔 同样方法配置在宝塔上没有成功于是有了这篇

    宝塔的superviosr可以管理启动fastapi,通过命令python main.py启动

    image.png
    只要将uvicorn写在main.py文件里即可,或者
    uvicorn main:app --reload运行
    单是显然这样必须运行4次superviosr,于是我选择了gunicorn运行uvicorn,在uvicorn文档中gunicorn也算首推方式,它是最简单的部署方式了。gunicorn重启麻烦和日志输出配置麻烦所以我们需要重新配置。gunicorn可以配置输出日志到单独的文件中也可以配置控制台直接输出,然后又supervisor管理日志
    import multiprocessing
    
    # 监听内网端口8000
    bind = "0.0.0.0:8000"
    # 并行工作进程数
    workers = multiprocessing.cpu_count() * 2 + 1
    # 监听队列
    backlog = 2048
    # 工作模式协程。
    worker_class = "uvicorn.workers.UvicornWorker"
    # 设置守护进程,将进程交给supervisor管理
    daemon = 'false'
    # worker_connections最大客户端并发数量,默认情况下这个值为1000。
    worker_connections = 2000
    # 设置日志记录水平
    loglevel = 'info'
    # supervisor管理gunicorn 日志输出到supervisor日志文件
    errorlog = '-'
    accesslog = '-'
    # 日志格式
    logconfig_dict = {
        'formatters': {
            "generic": {
                "format": "%(process)d %(asctime)s %(levelname)s %(message)s",  # 打日志的格式
                "datefmt": "[%Y-%m-%d %H:%M:%S %z]",  # 时间显示方法
                "class": "logging.Formatter"
            }
        }
    }
    

    以上是我的gunicorn配置,我把它加在config.py文件,也就是我fastapi项目的配置文件。根据文档配置的access_log_format = '%(h)s %(l)s %(u)s %(t)s' 不起作用,我选择用logcofig_dict格式化输出日志。配置好后用宝塔的supervisor 启动gunicorn -c=config.py main:app 命令即可

    相关文章

      网友评论

        本文标题:宝塔supervisor+gunicorn+uvicorn部署f

        本文链接:https://www.haomeiwen.com/subject/fgcpmktx.html