pm2 进程守护python flask

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】 删除应用
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容