美文网首页
pm2 进程守护python flask

pm2 进程守护python flask

作者: 1ace156a39cd | 来源:发表于2024-09-13 10:23 被阅读0次

    pm2 进程守护python flask

    [toc]

    安装Node.js

    1.首先,使用以下命令安装curl(如果尚未安装):

    sudo apt update
    sudo apt install curl
    

    2.确保你的系统上已安装了Node.js的最新版本(可以替换LTS版本为当前最新版本):

    curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
    

    3.安装Node.js:

    sudo apt install -y nodejs
    

    安装pm2

    1、安装

    npm install pm2 -g
    

    2、验证

    pm2 -v
    

    or

    pm2 list
    

    上传文件至服务器

    upload...

    python 配置

    生成requirements.txt

    如果你的项目环境中已经安装了所有必要的包,你可以使用

    pip freeze
    

    命令来生成一个包含所有已安装包及其版本的列表。这个列表可以直接用作 requirements.txt 文件。

    python 虚拟环境

    在Python中,虚拟环境是一种将一组Python包与其他Python项目隔离开的方法。这有助于避免依赖冲突和确保项目的可移植性。

    创建和管理Python虚拟环境的常见方法有:

    1. 使用venv模块(Python 3.3及以上版本)
    2. 使用virtualenv工具
    3. 使用pyenv工具

    使用Python自带的venv模块创建和管理虚拟环境

    # 创建虚拟环境
    python3 -m venv /path/to/new/virtual/environment
     
    # 激活虚拟环境
    source /path/to/new/virtual/environment/bin/activate
     
    # 退出虚拟环境
    deactivate
    

    使用virtualenv工具创建和管理虚拟环境

    首先,你需要安装virtualenv工具,如果你还没有安装,可以使用以下命令进行安装:

    pip install virtualenv
    

    然后,你可以使用以下命令创建和管理虚拟环境:

    # 创建虚拟环境
    virtualenv /path/to/new/virtual/environment
     
    # 激活虚拟环境
    source /path/to/new/virtual/environment/bin/activate
     
    # 退出虚拟环境
    deactivate
    

    使用pyenv工具创建和管理虚拟环境

    首先,你需要安装pyenv工具,如果你还没有安装,可以根据它的官方文档中的安装指南进行安装:<u>https://github.com/pyenv/pyenv-installer</u>

    然后,你可以使用以下命令创建和管理虚拟环境:

    # 创建虚拟环境
    pyenv virtualenv 3.7.1 my-virtual-env
     
    # 激活虚拟环境
    pyenv activate my-virtual-env
     
    # 退出虚拟环境
    pyenv deactivate
    

    注意:在这些命令中,/path/to/new/virtual/environment 是你想要创建虚拟环境的目录。在这个目录中,将会有一个新的Python环境,包括Python解释器和pip的副本。

    安装依赖

    cd ...
    pip install requirements.txt
    

    编写flask 启动脚本

    直接运行python flask

    python3  app.py
    

    gunicorn 运行 flask

    安装模块

    pip install gunicorn
    

    Gunicorn(绿色独角兽,Green Unicorn)是一个Python的WSGI HTTP服务器,来源于Ruby 的Unicorn项目。它采用pre-fork的worker模型;在启动时,会在主进程中预先fork出指定数量的worker进程来处理请求,极大提升了服务器请求负载能力,又可以兼容于多种Python Web框架,实现简单,占用系统资源少,速度也相当快。

    以多thread方式启动(flask在wsgi.py中):

    pm2 --name=ai start "gunicorn -c gunicorn_config.py wsgi:app"
    

    其中 gunicorn_config.py 参数如下

    # gunicorn_config.py
    
    # 并发工作进程数
    workers = 4  # 可根据服务器 CPU 核心数调整
    
    # 工作模式
    worker_class = 'gevent'  # 可以选择 'sync', 'eventlet', 'gevent', 'tornado', 'gthread'
    
    # 每个worker的最大线程数,仅在 gthread 模式下有效
    threads = 2  # 默认是1, 仅适用于 gthread 工作模式
    
    # 每个 worker 处理的最大请求数,超过此值后重启worker
    max_requests = 1000  # 默认0, 表示禁用自动重启
    
    # 绑定的IP和端口
    bind = '127.0.0.1:8000'  # 可以根据需求修改
    
    # 进程名称
    proc_name = 'my_gunicorn_app'  # 自定义进程名
    
    # 工作进程的超时时间
    timeout = 30  # 默认是30秒
    
    # 连接的最大数量,仅适用于 eventlet 或 gevent 工作模式
    worker_connections = 1000  # 适用于异步工作模式
    
    # Keep-Alive时间,连接存活时间
    keepalive = 2  # 默认2秒
    
    # 日志配置
    accesslog = '-'  # 访问日志输出到控制台
    errorlog = '-'   # 错误日志输出到控制台
    
    # 设置日志级别,可选 "debug", "info", "warning", "error", "critical"
    loglevel = 'info'
    
    # 是否以守护进程方式运行
    daemon = False  # 如果为 True,则表示以守护进程的方式运行
    
    # PID文件路径
    pidfile = '/tmp/gunicorn.pid'
    
    

    运行run.sh 文件

    pm2 命令列表

    命令 作用
    pm2 ls 列表 PM2 启动的所有的应用程序
    pm2 list 列表 PM2 启动的所有的应用程序
    pm2 start 《path》 启动应用程序
    pm2 start《path》 --watch 当文件变化时自动重启应用
    pm2 start 《path》 --name="test" 启动应用程序并命名为 "test"
    pm2 start 《path》 -i 4 cluster mode 模式启动4个bin/www的应用实例。4个应用程序会自动进行负载均衡
    pm2 scale 'www' 3 把名字叫www的应用扩展到3个实例.注意要加单引号
    pm2 show 【app-name或id】 显示应用程序的所有信息
    pm2 monit 显示每个应用程序的CPU和内存占用情况.按键盘上下键切换
    pm2 logs 显示所有应用程序的日志
    pm2 logs【app-name或id】 显示指定应用程序的日志
    pm2 flush 清空logs
    pm2 save 保存当前应用列表
    pm2 resurrect 重新加载保存的应用列表
    pm2 update 保存进程,杀死PM2和恢复进程
    pm2 serve 【path】【port】 pm2搭建静态文件服务器
    pm2 stop 【app-name或id】 停止应用
    pm2 delete 【app-name或id】 删除应用
    pm2 remove 【app-name或id】 删除应用

    相关文章

      网友评论

          本文标题:pm2 进程守护python flask

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