首页 > 其他分享 >supervisor+gunicorn+uvicorn部署fastapi项目

supervisor+gunicorn+uvicorn部署fastapi项目

时间:2022-12-20 16:36:45浏览次数:54  
标签:supervisor gunicorn 配置文件 fastapi py uvicorn 虚拟环境

一、编写一个项目

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

   先启动虚拟环境: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

相关文章

  • gunicorn + Flask架构中使用多进程全局锁
    有之前的​​认识WSGI​​和​​WSGI的前世今世​​之后,现在就可以介绍如何在gunicorn+Flask架构模式下,在Flask处理线程中使用全局锁。 说到锁在Python中也有很多锁,最常......
  • FastAPI + Vue
    相当于这篇文章的翻译:https://testdriven.io/blog/developing-a-single-page-app-with-fastapi-and-vuejs/源码地址:https://github.com/testdrivenio/fastapi-vue一、后......
  • Supervisor 进程管理
    ##一、简介supervisor是一个Python开发的、通用的进程管理程序。当程序中断时,supervisor能自动重启它,不再需要程序员或系统管理员自己编写代码来控制。**supervisor要求......
  • 【Web开发】Python实现Web服务器(FastAPI)
    文章目录​​1、简介​​​​2、安装​​​​3、官方示例​​​​3.1入门示例​​​​3.2跨域CORS​​​​3.3文件操作​​​​3.4WebSocket​​​​结语​​1、简介Fas......
  • fastapi身份认证
    官方文档FastApi提供了OAuth2PasswordBearer类对OAuth2中的password授权模式提供了支持。一、实现逻辑创建OAuth2PasswordBearer实例并指明tokenurl(认证用户获取tok......
  • 基于 Serverless一键体验FastAPI
    基于Serverless一键体验FastAPI​​活动地址​​​​服务搭建​​​​服务使用​​​​ServerlessDevs介绍​​​​什么是ServerlessDevs​​​​ServerlessDevs优势​......
  • fastapi websocket mongodb swagger-ui离线
    E:\song\agv_fastapi_socket_v3\app.pyimportjson#fastapifromfastapiimportFastAPI,WebSocket,Request,WebSocketDisconnectfromfastapi.responsesimportR......
  • FastApi (一)前端项目
    来自《PythonFastAPIWeb开发从入门到项目实战》一书的前端项目1.项目目录2.主文件main.js项目运行时执行的第一个文件,初始化运行环境,统一管理项目用到的模块import......
  • 使用 Hypercorn HTTP/2 ASGI 部署 FastAPI
    AnotherASGIwebserverthatsupportsHTTP/2andHTTP/3specifications我已经介绍了很多关于FastAPI的教程,其中服务器部署了Uvicorn,一个快速的ASGIWeb......
  • fastapi系列之-在多进程使用websocket一些问题细节的小结
    由于之前一直未深入去了解过关于fastapi中websocket多进程问题,由于之前的测试有可能都是但进程的方式进行启动测试,即便有时候是多进程的方式启动,但是巧合的是估计刚好用户......