pm2 進程守護python flask

pm2 進程守護python flask

[toc]

安裝Node.js

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

sudo apt update
sudo apt install curl

2.確保你的系統(tǒng)上已安裝了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

上傳文件至服務(wù)器

upload...

python 配置

生成requirements.txt

如果你的項目環(huán)境中已經(jīng)安裝了所有必要的包贪薪,你可以使用

pip freeze

命令來生成一個包含所有已安裝包及其版本的列表吨艇。這個列表可以直接用作 requirements.txt 文件徒爹。

python 虛擬環(huán)境

在Python中,虛擬環(huán)境是一種將一組Python包與其他Python項目隔離開的方法贺奠。這有助于避免依賴沖突和確保項目的可移植性举农。

創(chuàng)建和管理Python虛擬環(huán)境的常見方法有:

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

使用Python自帶的venv模塊創(chuàng)建和管理虛擬環(huán)境

# 創(chuàng)建虛擬環(huán)境
python3 -m venv /path/to/new/virtual/environment
 
# 激活虛擬環(huán)境
source /path/to/new/virtual/environment/bin/activate
 
# 退出虛擬環(huán)境
deactivate

使用virtualenv工具創(chuàng)建和管理虛擬環(huán)境

首先,你需要安裝virtualenv工具敞嗡,如果你還沒有安裝,可以使用以下命令進行安裝:

pip install virtualenv

然后航背,你可以使用以下命令創(chuàng)建和管理虛擬環(huán)境:

# 創(chuàng)建虛擬環(huán)境
virtualenv /path/to/new/virtual/environment
 
# 激活虛擬環(huán)境
source /path/to/new/virtual/environment/bin/activate
 
# 退出虛擬環(huán)境
deactivate

使用pyenv工具創(chuàng)建和管理虛擬環(huán)境

首先喉悴,你需要安裝pyenv工具,如果你還沒有安裝玖媚,可以根據(jù)它的官方文檔中的安裝指南進行安裝:<u>https://github.com/pyenv/pyenv-installer</u>

然后箕肃,你可以使用以下命令創(chuàng)建和管理虛擬環(huán)境:

# 創(chuàng)建虛擬環(huán)境
pyenv virtualenv 3.7.1 my-virtual-env
 
# 激活虛擬環(huán)境
pyenv activate my-virtual-env
 
# 退出虛擬環(huán)境
pyenv deactivate

注意:在這些命令中,/path/to/new/virtual/environment 是你想要創(chuàng)建虛擬環(huán)境的目錄今魔。在這個目錄中勺像,將會有一個新的Python環(huán)境,包括Python解釋器和pip的副本错森。

安裝依賴

cd ...
pip install requirements.txt

編寫flask 啟動腳本

直接運行python flask

python3  app.py

gunicorn 運行 flask

安裝模塊

pip install gunicorn

Gunicorn(綠色獨角獸削咆,Green Unicorn)是一個Python的WSGI HTTP服務(wù)器席镀,來源于Ruby 的Unicorn項目。它采用pre-fork的worker模型;在啟動時掏导,會在主進程中預(yù)先fork出指定數(shù)量的worker進程來處理請求,極大提升了服務(wù)器請求負載能力吭从,又可以兼容于多種Python Web框架纤子,實現(xiàn)簡單,占用系統(tǒng)資源少睡蟋,速度也相當快踏幻。

以多thread方式啟動(flask在wsgi.py中):

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

其中 gunicorn_config.py 參數(shù)如下

# gunicorn_config.py

# 并發(fā)工作進程數(shù)
workers = 4  # 可根據(jù)服務(wù)器 CPU 核心數(shù)調(diào)整

# 工作模式
worker_class = 'gevent'  # 可以選擇 'sync', 'eventlet', 'gevent', 'tornado', 'gthread'

# 每個worker的最大線程數(shù),僅在 gthread 模式下有效
threads = 2  # 默認是1, 僅適用于 gthread 工作模式

# 每個 worker 處理的最大請求數(shù)戳杀,超過此值后重啟worker
max_requests = 1000  # 默認0, 表示禁用自動重啟

# 綁定的IP和端口
bind = '127.0.0.1:8000'  # 可以根據(jù)需求修改

# 進程名稱
proc_name = 'my_gunicorn_app'  # 自定義進程名

# 工作進程的超時時間
timeout = 30  # 默認是30秒

# 連接的最大數(shù)量该面,僅適用于 eventlet 或 gevent 工作模式
worker_connections = 1000  # 適用于異步工作模式

# Keep-Alive時間夭苗,連接存活時間
keepalive = 2  # 默認2秒

# 日志配置
accesslog = '-'  # 訪問日志輸出到控制臺
errorlog = '-'   # 錯誤日志輸出到控制臺

# 設(shè)置日志級別,可選 "debug", "info", "warning", "error", "critical"
loglevel = 'info'

# 是否以守護進程方式運行
daemon = False  # 如果為 True吆倦,則表示以守護進程的方式運行

# PID文件路徑
pidfile = '/tmp/gunicorn.pid'

運行run.sh 文件

pm2 命令列表

命令 作用
pm2 ls 列表 PM2 啟動的所有的應(yīng)用程序
pm2 list 列表 PM2 啟動的所有的應(yīng)用程序
pm2 start 《path》 啟動應(yīng)用程序
pm2 start《path》 --watch 當文件變化時自動重啟應(yīng)用
pm2 start 《path》 --name="test" 啟動應(yīng)用程序并命名為 "test"
pm2 start 《path》 -i 4 cluster mode 模式啟動4個bin/www的應(yīng)用實例听诸。4個應(yīng)用程序會自動進行負載均衡
pm2 scale 'www' 3 把名字叫www的應(yīng)用擴展到3個實例.注意要加單引號
pm2 show 【app-name或id】 顯示應(yīng)用程序的所有信息
pm2 monit 顯示每個應(yīng)用程序的CPU和內(nèi)存占用情況.按鍵盤上下鍵切換
pm2 logs 顯示所有應(yīng)用程序的日志
pm2 logs【app-name或id】 顯示指定應(yīng)用程序的日志
pm2 flush 清空logs
pm2 save 保存當前應(yīng)用列表
pm2 resurrect 重新加載保存的應(yīng)用列表
pm2 update 保存進程,殺死PM2和恢復(fù)進程
pm2 serve 【path】【port】 pm2搭建靜態(tài)文件服務(wù)器
pm2 stop 【app-name或id】 停止應(yīng)用
pm2 delete 【app-name或id】 刪除應(yīng)用
pm2 remove 【app-name或id】 刪除應(yīng)用
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚕泽,一起剝皮案震驚了整個濱河市晌梨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌须妻,老刑警劉巖仔蝌,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荒吏,居然都是意外死亡敛惊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門绰更,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞧挤,“玉大人,你說我怎么就攤上這事儡湾√靥瘢” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵徐钠,是天一觀的道長癌刽。 經(jīng)常有香客問我,道長尝丐,這世上最難降的妖魔是什么显拜? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮爹袁,結(jié)果婚禮上远荠,老公的妹妹穿的比我還像新娘。我一直安慰自己失息,他們只是感情好矮台,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著根时,像睡著了一般瘦赫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛤迎,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天确虱,我揣著相機與錄音,去河邊找鬼替裆。 笑死校辩,一個胖子當著我的面吹牛窘问,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宜咒,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惠赫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了故黑?” 一聲冷哼從身側(cè)響起儿咱,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎场晶,沒想到半個月后混埠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡诗轻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年钳宪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扳炬。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吏颖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恨樟,到底是詐尸還是另有隱情半醉,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布厌杜,位于F島的核電站,受9級特大地震影響计螺,放射性物質(zhì)發(fā)生泄漏夯尽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一登馒、第九天 我趴在偏房一處隱蔽的房頂上張望匙握。 院中可真熱鬧,春花似錦陈轿、人聲如沸圈纺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛾娶。三九已至,卻和暖如春潜秋,著一層夾襖步出監(jiān)牢的瞬間蛔琅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工峻呛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留罗售,地道東北人辜窑。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像寨躁,于是被迫代替她去往敵國和親穆碎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容