當前位置:首頁 » 編程軟體 » flask編譯成pyc部署

flask編譯成pyc部署

發布時間: 2022-12-15 23:35:21

⑴ 如何部署簡單python + flask應用

我們先寫一個最基本的flask應用:

demo.py

from flask import Flask
app = Flask(**name**)
@app.route('\')
def index():
return 'Hello World.'
if __name__ == __main__:
app.run()
運行這個py文件,打開瀏覽器訪問127.0.0.1:5000就能看到顯示Hello World的頁面 .
如果讓這個flask引用監聽來自公網ip的請求,理論上你跑此程序的機器就相當於一個伺服器了,然而這個伺服器並不完美,所以我們需要nginx和gunicorn來增加它的功能,讓它真刀真槍上生產環境的時候能按要求運行。

flask自帶的WSGI框架性能很差勁,只能適用於開發環境調試使用。我們用專業一點的gunicorn(還有很多其他優秀的框架)替代flask自帶的WSGI框架。

配置完後,通過命令』/usr/local/bin/gunicorn -b127.0.0.1:5000『啟動應用。打開瀏覽器訪問127.0.0.1:5000,同樣能夠得到返回頁面

然而gunicorn也僅僅是一個python的WSGI框架而已,要讓它真正處理來自互聯網的各類訪問功能還是有點欠缺,這時候就需要用到大名鼎鼎的nginx 伺服器來替gunicorn遮風擋雨了。

Ubuntu下安裝nginx可以用命令

sudo apt-get install nginx

安裝後需要進行下配置:

cd /etc/nginx/sites-available

sudo vi test (test為配置名稱,可以根據自己項目進行命名)

test文件的配置為:
server {
listen 80; # 監聽80埠
location / {

proxy_pass http://127.0.0.1:5000; # 代理本機127.0.0.1:5000的服務

}
location /static {

alias /home/ubuntu/myproject/myblog/app/static; # 負載均衡

}
}

cd ..

cd sites-enable

sudo ln -s ../sites-available/lwhile . (創建軟鏈接,別漏掉最後的.)

sudo service nginx reload

sudo service nginx restart

這樣nginx的基本配置文件就寫好了 接下來我們配置進程管理工具supervisor supervisor可以在後面啟動你的python進程,這樣很方便
1.cd /etc/supervisor/conf.d

2.sudo vi test.conf (test為文件名)

[program:test]
command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py

3.sudo supervisorctl

4.reload

5.start test

如果一切正常,做完這所有步驟之後,現在公網的ip訪問你的主機,就可以打開你的flask應用了

⑵ gunicorn部署Flask服務

作為一個Python選手,工作中需要的一些服務介面一般會用Flask來開發。

Flask非常容易上手,它自帶的 app.run(host="0.0.0.0", port=7001) 用來調試非常方便,但是用於生產環境無論是處理高並發還是魯棒性都有所欠缺,一般會配合WGSI容器來進行[生產環境的部署][1]。

小磊哥推薦了參考文章[1]中的部署方式,希望將已有的服務放到gunicorn或者Tornado中部署,並用supervisor來管理所有進程(有幾個不同的服務)。

經過調研和嘗試

首先pip安裝gunicorn。
pip install gunicorn --user

由於是部署在公司雲主機上,通常不會給root許可權。之前都是提工單給SA sudo裝的,後來發現更安全也更方便的方法是 pip install xxx --user ,美中不足是安裝完以後需要 手動添加PATH
export PATH=/home/username/.local/bin:$PATH
方便起見可以加到 ~/.bash_profile 中

簡單地,gunicorn可以通過 gunicorn -w 4 -b 127.0.0.1:4000 run:app 啟動一個Flask應用。其中,

其中run.py中文件的可能形式是:

通過 gunicorn -h 可以看到gunicorn有非常多的配置項,因此通常會寫成一個config.py文件來進行配置。看了一下文檔似乎沒有給出正確的config.py中配置項的命名,並且有些博客博主給出的配置項命名是錯誤的,導致配置沒有生效,踩了不少的坑(我找不到那篇坑坑的文章了)。這篇博客[2]給出了一些比較常用且 正確 的配置。

我所用項目的配置項如下:

生產環境不需要這個配置項,但調試的時候還是挺好用的。而且,開啟debug項後,在啟動gunicorn的時候可以看到所有可配置項的配置,如下所示。
之前在被上一篇博主欺騙的時候,仔細看了調試信息,發現 accesslog errorlog 都沒有被配置,所以導致啟動以後看不到任何日誌。

config.py中只需要配置需要修改的項的,大部分採用默認配置即可。默認配置的具體配置內容可以通過 gunicorn -h 來查詢。

* 配置文件和調試信息來自兩個不同進程,因此信息可能有細微差異

worker_class是指開啟的每個工作進程的模式類型,默認為sync模式,也可使用gevent模式。

workers 是工作進程數量,在上述 config.py 中,取的是CPU的數量。需要注意部署機器的性能,不能無限制多開。多篇文章中推薦了 multiprocessing.cpu_count() * 2 + 1 這個數量,考慮到我會在一個機器上部署兩個服務,因此數量減半。

daemon = True 意味著開啟後台運行,默認為 False

gunicorn的環境配置和使用都比較簡單,也解決了我總是用nohup python run.py >out.log 2>&1 &來啟動Flask後台服務的問題。

在採用gunicorn部署之前,我也對後台服務的目錄結構進行了調整。雖然只是便利工作的服務,也希望可以盡可能變的更加professional~

傳送門: Flask目錄調整

參考文章:
[1] https://eclipsesv.com/2016/12/12/flask 部署方式實踐
[2] http://blog.csdn.net/zs_2014/article/details/41249347

⑶ 怎麼在linux系統下部署flask

Python基礎、列表、類、函數、模塊。HTML/CSS (基礎)。
學習這篇教程你不必是一個python高級開發者,但是首先我建議你閱讀https://wiki.python.org/moin/BeginnersGuide/NonProgrammers 。
在Linux上安裝Python 3
在大多數Linux發行版上Python是默認安裝的。下面的你命令可以讓你看到安裝的版本。

⑷ python .pyc是什麼文件

一、什麼是pyc文件?

pyc文件就是py程序編譯後得到的文件,是一種二進制文件。一般是這樣的:

pyc文件經過python解釋器最終會生成機器碼運行。所以pyc文件是可以跨平台部署的,類似java的.class文件。如果py文件改變,也會重新生成pyc文件。

相關推薦:《Python視頻教程》

二、pyc文件怎麼生成的?

1、被當做模塊調用的時候會自動生成pyc文件。

一般是python腳本被當做模塊被其他腳本文件調用時,就會產生pyc文件,舉個例子:

如果你寫了一個腳本文件image.py是用來生成驗證碼的,如果你在index.py文件中想引用這個腳本的功能,就需要通過import導入image.py文件,然後,如果你運行index.py文件,那就會在image.py文件所在的路徑生成一個image.pyc文件。

2、對於py文件,可以執行下面命令來生成pyc文件。

3、通過代碼來生成pyc文件。

三、為什麼要生成pyc文件?

1、python為了提高運行效率也會進行編譯。

python是解釋型語言,運行的時候需要通過python解釋器編譯,所以先編譯出pyc文件後,可以節省編譯這一步的耗時時間。

2、不想讓源碼泄露。

因為py文件是可以直接看到源碼的,對於一般的商業公司來說,這有點不妙,因為pyc文件可以獨立於py文件,刪除py文件也不會出錯。這就是太好了,只需要編譯成pyc文件再發布出去就好了。

⑸ 新浪雲怎麼部署 python flask

首先安裝python,這個我就不多說了,記得配置好系統的環境變數,python和python包(Scripts目錄)都要加入系統的環境變數。
接下來就pip安裝flask,windows下的命令為:
$ pip install flask
接下來創建一個文件夾,就是你將來整個工程的文件。通過cmd命令進入到這個文件夾中。(cd命令)
然後在這個文件夾中創建一個python文件,py為後綴的文件。

接下來編輯這個文件(文本編輯器、IDE都可以)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '
Hello World!
'
if __name__ == '__main__':
app.run(debug = True)
寫入代碼就可以簡單的啟動伺服器了,默認根目錄下返回「hello,world!」,如何運行的就只需要在cmd中運行
$ python myapp.py
運行成功的話可以看到下圖的提示。
訪問localhost:5000的時候(默認埠5000,可以通過host參數修改),例如
app.run(debug=True,host='0.0.0.0:5000')
基本上這樣完成了flask的基本配置,接下來就是將其放到新浪雲SAE上,SAE本身就支持flask框架的部署,但是後期我們需要引入其他的一些第三方的包,因此最好就是講自己的包放到工程文件中調用。
方法就是在使用pip安裝的時候,使用這樣子的命令:
$ pip install -t vendor PACKAGENAME
這個樣子在本地安裝的時候就會將包放在一個vendor文件夾中,然後安裝SAE官方的文檔,在工程文件中添加一個名為「index.wsgi」的文件,內容為:
import sae
sae.add_vendor_dir('vendor')
from myapp import app
application = sae.create_wsgi_app(app)
這樣子基本就完成了,只需要講文件上傳到SAE上就可以完成部署。
SAE上的操作記得在新建應用的時候選擇python2.7,然後我用的代碼管理方式是git。
接下來的方式就是git的內容了,這里我就不多說,寫下幾個命令:
將倉庫的內容復制到本地
$git clone 你的git倉庫地址
創建分支
$git branck 分支名
使用分支
$git checkout 分支名
修改代碼
$git add --all
$git commit -a "注釋"
$git pust 分支名
(以前都是用svn的所以git還不是特別熟)
部署上傳完代碼之後就可以好好折騰啦

⑹ 阿里雲伺服器部署flask項目

當我們執行下面的hello.py時,使用的flask自帶的伺服器,完成了web服務的啟動。在生產環境中,flask自帶的伺服器,無法滿足性能要求,我們這里採用Gunicorn做wsgi容器,來部署flask程序。Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP伺服器。從Ruby的獨角獸(Unicorn )項目移植。該Gunicorn伺服器與各種Web框架兼容,實現非常簡單,輕量級的資源消耗。Gunicorn直接用命令啟動,不需要編寫配置文件,相對uWSGI要容易很多。

區分幾個概念

WSGI:全稱是Web Server Gateway Interface(web伺服器網關介面),它是一種規范,它是web伺服器和web應用程序之間的介面。它的作用就像是橋梁,連接在web伺服器和web應用框架之間。

uwsgi:是一種傳輸協議,用於定義傳輸信息的類型。

uWSGI:是實現了uwsgi協議WSGI的web伺服器。

我們的部署方式: nginx + gunicorn + flask

web開發中,部署方式大致類似。簡單來說,前端代理使用Nginx主要是為了實現分流、轉發、負載均衡,以及分擔伺服器的壓力。Nginx部署簡單,內存消耗少,成本低。Nginx既可以做正向代理,也可以做反向代理。

正向代理 :請求經過代理伺服器從區域網發出,然後到達互聯網上的伺服器。

特點 :服務端並不知道真正的客戶端是誰。

反向代理 :請求從互聯網發出,先進入代理伺服器,再轉發給區域網內的伺服器。

特點 :客戶端並不知道真正的服務端是誰。

區別 :正向代理的對象是客戶端。反向代理的對象是服務端。

查看命令行選項 : 安裝gunicorn成功後,通過命令行的方式可以查看gunicorn的使用信息。

直接運行

指定進程和埠號 : -w: 表示進程(worker)。 -b:表示綁定ip地址和埠號(bind)。--access-logfile:表示指定log文件的路徑

作為守護進程後台運行

阿里雲伺服器默認安裝到 /user/sbin/ 目錄,進入目錄,啟動 ngnix:

Ubuntu 上配置 Nginx 也是很簡單,不要去改動默認的 nginx.conf 只需要將/etc/nginx/sites-available/default文件替換掉就可以了。
新建一個 default 文件,添加以下內容:

修改完成後重啟nginx即可。

Ubuntu 上配置 Nginx 另一種方法,cd 到 /etc/nginx/conf.d 文件夾,新建 xxx.conf 文件(xxx 可以是項目名,只要是 .conf 文件即可),寫入以下內容:

需要監聽 https 請求時,寫入以下內容:

⑺ 關於一些python的web框架,flask在apache上面部署的問題。按官方和百度查到的教程去操作都是不可以..

應該 是你那個APP WSGI程序中的PATH不夠對。 你沒有把真正的FLASK的路徑加上去。

TEST與MOD——WSGI是不同的。TEST上測試沒有用。
你試試把DIST——PACKATGES或者是SITE——PACKAGTES里的FLASK目錄加上去試試

⑻ 如何部署簡單python + flask應用

  1. python是一款應用非常廣泛的腳本程序語言,谷歌公司的網頁就是用python編寫。python在生物信息、統計、網頁製作、計算等多個領域都體現出了強大的功能。python和其他腳本語言如java、R、Perl 一樣,都可以直接在命令行里運行腳本程序。工具/原料
    python;CMD命令行;windows操作系統
    方法/步驟
    1、首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由於3.0版本以上不向下兼容,體驗較差。

    2、打開文本編輯器,推薦editplus,notepad等,將文件保存成 .py格式,editplus和notepad支持識別python語法。
    腳本第一行一定要寫上 #!usr/bin/python
    表示該腳本文件是可執行python腳本
    如果python目錄不在usr/bin目錄下,則替換成當前python執行程序的目錄。
    3、編寫完腳本之後注意調試、可以直接用editplus調試。調試方法可自行網路。腳本寫完之後,打開CMD命令行,前提是python 已經被加入到環境變數中,如果沒有加入到環境變數,請網路

    4、在CMD命令行中,輸入 「python」 + 「空格」,即 」python 「;將已經寫好的腳本文件拖拽到當前游標位置,然後敲回車運行即可。

⑼ Flask + Nginx + Gunicorn + Gevent部署

==本教程僅適用於Linux和Mac==

部署是建立在你已經基本完成開發的基礎上,所以Python的安裝什麼的就不再進行說明了,上述依賴的安裝也不再贅述,請根據自己的平台查找安裝教程,這里主要對配置進行說明。

Gunicorn的配置相比於uWSGI簡單了很多,基本上一行命令就可以把項目跑起來。性能上據說uWSGI更加強大一些,不過在差距上並不明顯, 至少在我的日常使用中沒有因為Gunicorn出現過性能瓶頸,真的到了那一天再進行更換也不是什麼特別麻煩的事情。

在項目跟目錄創建一個gunicorn.py文件,當然名字和文件位置你可以進行更改。

這里我們採用gevent模式來支持並發,可以根據你自己的實際情況來進行模式選擇。我最近的項目因為阻塞主要是對SAP數據查詢導致的,所使用的庫並不是純Python編寫,也沒有說明支持協程,所以我我採用了gthead模式。

首先我們調用了gevent的Monkey Patch黑科技,該方法hook了標准卡裡面的大部分阻塞操作,使得在我們進行長時間IO操作時可以切換到別的協程,從而實現非同步並發。然後我們創建log目錄,設置log路徑,設置埠什麼的。

接著我們設置worker的數量,也就是進程數,通常設置為伺服器核心數2倍+1,這也是官方文檔事例中的配置。最後再設置一下worker的模式,這里填寫的就是前文所說的gevent。

更多項目配置請參照官方文檔
http://docs.gunicorn.org/en/latest/configure.html#

不管你是用flask-script還是flask-cli來啟動項目,一定會有一個入口文件(這名字一定很不規范),裡面創建並啟動了Flask App實例。這里再創建一個程序入口,這個入口專門為Gunicorn服務,用來啟動生產環境。

再根目錄創建一個wsgi.py文件,名字目錄還是可以隨意更改。

這里和你普通的程序入口並沒有什麼區別,中間對logger的一頓操作是把app的logger修改為gunicorn的,這樣我們再上一步設置的log路徑才能生效。

測試配置是否正確最簡單的方法就是跑一下。
如果你是用了虛擬環境,首先要先進入虛擬環境(這里強烈建議使用虛擬環境,我還是使用傳統的virtualenv)。

然後執行命令:

gunicorn.py和wsgi:application根據前兩部的文件名和變數名自行更改

Uninx哲學,沒有消息就是最好的消息,如果沒有報錯,程序就順利跑起來了。這時如果有圖形界面或者設置的埠是開放給外網的,你就可以訪問項目試試看是否成功運行,如果無法通過外網訪問並沒有圖形界面,也可以通過wget命令進行測試,請確保這個步驟正確再進行下一步操作。如果這一步順利完成,就可以Ctrl+C退出了,因為我們不需要手動啟動項目,接下來我們將通過Supervisor來幫助我們管理項目的進程。

Supervisor是一個用Python編寫的進程管理工具,我們這里通過他來管理我們的項目進程,開啟關閉啥的。

首先檢查是否存在配置文件,一般配置文件的路徑是

如果配置文件不存在,我們可以通過命令來生成

配置文件的內容很多,項目配置可以參照官網文檔
http://www.supervisord.org/introction.html

打開配置文件的最後一行

默認一般是注釋掉的,我們可以取消注釋,這行配置的作用也很淺顯,就是導入設置的路徑下的所有conf文件,這使得我們如果有多個項目可以不用都寫在同一個配置文件里,可以一個項目一個配置文件,更適合管理。這里的路徑也是可以按照實際需求隨意更改。這里需要重啟Supervisor服務,我剛開始做的時候都是直接重啟伺服器,不過如果你沒有把Supervisor自啟動,重啟後需要手動啟動Supervisord

在設置的路徑下新建一個配置文件,命令請根據上一步設置的擴展名。

project_name按照你的實際需求修改,作為你這個服務的唯一標識,用於啟動停止服務時使用。
command修改為測試gunicorn時使用的命令,這里我因為使用了虛擬環境,所以我使用了絕對路徑,指向了虛擬環境的gunicorn,這種配置我個人還是喜歡都使用絕對路徑。
directory指定了工作路徑,通常設置為項目根目錄,我們填寫的gunicorn.py和wsgi都是基於這個路徑的。

更多配置請參照官網的配置文檔。

管理Supervisor的項目是使用supervisorctl命令,我們可以啟動項目試試看

如果沒有報錯,應該可以和上一步測試gunicorn一樣可以正常訪問項目了。

Nginx的各種好處就自行查詢吧,我們這里就做一下簡單的配置。
因為我的項目一般都是前後端分離的,所以這里這里還會配置CORS來解決跨域的問題

這里就不細說了,整段貼出來,說一下其中一些重點

add_header相關設置主要是CORS,解決跨域的

第一第二行末尾加了always作用是默認CORS只對2XX狀態碼有效,如果你用4XX或者別的錯誤狀態返回結果依舊會提示跨域,所以加上always使得所有狀態都可以正確返回。
Allow-Methods:請根據直接用到的請求方式進行設置,OPTIONS一定需要加上。
Allow-Headers:如果你在header的頭部加上了自定義欄位,請在這里也加上。

、、、
if ($request_method = 'OPTIONS') {
return 204;
}
、、、
CORS在進行POST請求前會發一次OPTIONS請求試探試探,這里我們只要檢測到OPTIONS請求,我們就返回204,告訴瀏覽器來吧來吧。

proxy_pass就是設置Nginx轉發的地址,也就是設置成Gunicorn設置的地址和埠
proxy_set_header請根據你設置Nginx Server的埠填寫

最後重啟一下Nginx就可以了

看著步驟很多,其實除了Gunicorn都不是必須的,Supervisor和Nginx你要是不想使用其實也可以不使用,我說得比較啰嗦,不過其實很容易。

⑽ flask項目在Linux上部署

有兩種部署方式:

目錄下必須有程序入口wsgi.py 或者是 run.py

創建一個app.ini文件

命令行:

啟動成功之後會有一個.pid文件

熱點內容
如何配置一台長久耐用的電腦 發布:2025-07-12 11:43:03 瀏覽:601
昆明桃源碼頭 發布:2025-07-12 11:38:45 瀏覽:568
大司馬腳本掛機 發布:2025-07-12 11:38:35 瀏覽:458
資料庫實時監控 發布:2025-07-12 11:31:33 瀏覽:743
vb6反編譯精靈 發布:2025-07-12 11:23:12 瀏覽:997
模擬存儲示波器 發布:2025-07-12 11:10:58 瀏覽:814
怎麼查看安卓真實運行內存 發布:2025-07-12 11:08:39 瀏覽:883
鏈接直接訪問 發布:2025-07-12 11:03:37 瀏覽:950
安卓如何把備忘錄轉為文檔 發布:2025-07-12 10:48:15 瀏覽:702
無法連接ftp主機 發布:2025-07-12 10:47:33 瀏覽:345