最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

supervisor+gunicorn+uvicorn部署fastapi项目

来源:博客园

一、编写一个项目


(资料图片仅供参考)

本项目是在虚拟环境下的:

先启动虚拟环境:source .venv/bin/activate。(创建虚拟环境自己去找)

项目用于演示,所以非常简单,

在虚拟环境中安装需要的第三方库:fastapi, uvicorn

main.py:

# coding=utf-8import uvicornfrom fastapi import FastAPIapp = FastAPI()@app.get("/")async def root():    return {"message": "Hello World"}if __name__ == "__main__":    uvicorn.run(app, host="0.0.0.0", port=8000)

在这里先试着启动一下项目,确保没有问题

然后我么继续

二、使用gunicorn运行项目(只支持Linux,不知win):

在虚拟环境中安装gunicorn: pip installgunicorn

编写配置文件,这里的配置文件必须未py的文件

gunicorn.py:

# gunicorn.py# 并行工作进程数workers = 1# 指定每个工作者的线程数threads = 2# 监听内网端口5000bind = "0.0.0.0:8000"# 设置守护进程,将进程交给supervisor管理daemon = "false"# 工作模式协程worker_class = "uvicorn.workers.UvicornWorker"# 设置最大并发量worker_connections = 2000# 设置进程文件目录pidfile = "/var/run/gunicorn.pid"# 设置访问日志和错误信息日志路径accesslog = "/var/log/gunicorn_acess.log"errorlog = "/var/log/gunicorn_error.log"# 设置日志记录水平loglevel = "info"

然后试着运行一下:

注意用户权限,建议root用户,免得各种问题,我是ubuntu,坑,之前centos7就没有这么些问题

gunicorn -cgunicorn.py main:app

不出意外的话,这里是成功的。可以在你定义的log下进行查看

三、使用supervisor管理进程

安装supervisor: Ubuntu: sudo apt install supervisord

启动supervisor服务:sudo supervisord

可以看到启动的时候一推提示:-c指定配置文件按,我不想指定,让他读取默认的配置文件,默认的配置文件中包含了conf.d下的所有配置

所以我们的项目关于supervisor的配置会放在/etc/superv/conf.d目录下

编写改项目的supervisor配置文件:

进入supervisor的配置文件按下:/etc/supervisor/conf.d

新建配置文件:testOneFastapi.conf

[program:testOneFast] # program固定格式后边的你根据自己项目自定义directory=/home/iriot/python_dir/testOneChaose # 项目根路径command=/home/iriot/python_dir/testOneChaose/.venv/bin/gunicorn -c gunicorn.py main:app  #注意一定是要从你的虚拟环境下运行gunicorn命令autostart=truestdout_syslog=truestdout_logfile=/home/iriot/python_dir/logsstdout_logfile_maxbytes=50MBstderr_syslog=truestderr_logfile=/home/iriot/python_dir/logsstderr_logfile_maxbytes=50MB

保存文件后执行更新操作:supervisorctl update

可以看到你的项目进程添加进去了

然后可以试着访问自己的项目了:

关键词: 配置文件 虚拟环境 没有问题