一、编写一个项目
本项目是在虚拟环境下的:
先启动虚拟环境:source .venv/bin/activate。(创建虚拟环境自己去找)
项目用于演示,所以非常简单,
在虚拟环境中安装需要的第三方库:fastapi, uvicorn
main.py:
# coding=utf-8 import uvicorn from fastapi import FastAPI app = 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 install gunicorn
编写配置文件,这里的配置文件必须未py的文件
gunicorn.py:
# gunicorn.py # 并行工作进程数 workers = 1 # 指定每个工作者的线程数 threads = 2 # 监听内网端口5000 bind = '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 -c gunicorn.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=true stdout_syslog=true stdout_logfile=/home/iriot/python_dir/logs stdout_logfile_maxbytes=50MB stderr_syslog=true stderr_logfile=/home/iriot/python_dir/logs stderr_logfile_maxbytes=50MB
保存文件后执行更新操作:supervisorctl update
可以看到你的项目进程添加进去了
然后可以试着访问自己的项目了:
标签:supervisor,gunicorn,配置文件,fastapi,py,uvicorn,虚拟环境 From: https://www.cnblogs.com/xiaoyuzai09/p/16994523.html