pm2 进程守护python flask

pm2 进程守护python flask

文章目录

安装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工具,如果你还没有安装,可以根据它的官方文档中的安装指南进行安装:++https://github.com/pyenv/pyenv-installer++

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

复制代码
# 创建虚拟环境
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】 删除应用
相关推荐
databook11 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar13 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805113 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_13 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机19 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机21 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机21 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机21 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i21 小时前
drf初步梳理
python·django
每日AI新事件21 小时前
python的异步函数
python