fastapi

宝塔supervisor+gunicorn+uvicorn部署f

2020-10-22  本文已影响0人  壹明_c63f

之前用过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 命令即可

上一篇下一篇

猜你喜欢

热点阅读