基於flask的輕量級webapi開發入門-從搭建到部署


基於flask的輕量級webapi開發入門-從搭建到部署

注:本文的代碼開發工作均是在python3.7環境下完成的。
關鍵詞:python flask tornado webapi

在python虛擬環境中開發flask應用

參考:
Python3虛擬環境 venv搭建輕量級虛擬環境
關於Python3中venv虛擬環境
Flask框架web開發:零基礎入門
如何在某.py文件中調用其他.py內的函數
Flask 路由
Flask解決跨域的問題

python3.3以上的環境中直接提供了venv模塊創建虛擬環境,該模塊代替了原virtualenv,建議直接使用python3最新版本。

虛擬環境創建示例

創建一個名為flask的虛擬環境,系統會創建一個flask文件夾,文件夾中包含了該版本python的依賴環境,里面有三個include,Lib,Scripts三個子文件夾。

 python -m venv flask 

進入Scripts文件夾,運行activate.bat激活虛擬環境(deactivate.bat關閉虛擬環境,ps環境中運行Activate.ps1激活)

 activate.bat 

激活虛擬環境后,可通過pip安裝flask模塊

 pip install flask 

在flask文件夾同級下,建立APP文件夾,在APP文件夾內新建 run.py 文件,創建一個Hello Word的flask服務,完整代碼如下:

from flask import Flask # 引用flask庫
app= Flask(__name__)

# 定義路由
@app.route('/')  
def hello_world():
    return 'Hello,World!'

if __name__=="__main__":
    app.run(debug=True,port=8080) # 開啟調試模式,程序訪問端口為8080

運行 run.py

 python run.py

在瀏覽器中訪問:http://127.0.0.1:8080/ ,成功后返回 Hello,World!

利用tornado和nginx將程序部署在生產環境服務器上

參考:
將Flask應用程序部署在nginx,tornado的簡單方法
windowsServer環境下的flask+nginx部署方案
Windows 下Flask Nginx Tornado 協同工作的簡單例子

安裝 tornado

pip install tornado

在 run.py 同級目錄下創建 tornado_server.py 文件,作用是托管app.py。同時將 app.py 中的端口號去掉,在 tornado_server.py 中定義訪問端口號。 tornado_server.py 代碼如下:

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from run import app # 這里和run.py對應

http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)  #flask默認的端口
IOLoop.instance().start()

運行 tornado_server.py

python.exe tornado_server.py

配置nginx

如果之前啟動了nginx,在cmd中批量殺死所有nginx進程

taskkill   /fi   "imagename  eq   nginx"  /f

配置nginx中的反向代理,使其指向tornado_server.py中的地址和端口

server {
        listen       80;#端口
        server_name  123.123.123.123;#公網的ip地址,也可以是你沒有加www的網址

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        #location /test {
        #    root   C:\python\workspace;
        #    index  test.html;
        #}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        location / {
            proxy_pass   http://localhost:5000;#所有訪問80端口的,都會轉到5000端口
        }

啟動 nginx ,訪問ngix提供的80端口

start nginx

python 虛擬環境遷移

方法有幾種,生成環境服務器可以連接互聯網的情況下,推薦使用requirements.txt方式

  • 激活開發虛擬環境,執行命令,將包依賴信息保存在requirements.txt文件中
pip freeze > requirements.txt
  • 在生產環境服務器建立虛擬環境,利用requirements.txt文件還原依賴包
pip install -r requirements.txt

生產服務器中的虛擬環境如果是開發環境的拷貝,最好先pip uninstall -ry requirements.txt,再pip install -r requirements.txt

利用nssm將python程序封裝成windows服務

參考:
使用nssm部署windows服務啟動應用
定時啟動多個cmd的python程序,並且批處理關閉各個程序,一鍵啟動conda虛擬環境和運行多個python

將python腳本文件封裝成bat文件,如 run.bat

E:\develop\py3fcapi\flask\Scripts\activate.bat && python E:\develop\py3fcapi\app\tornado_server.py

利用nssm將bat文件封裝為windows服務,可以在生產環境中更好的運行。nssm安裝配置見參考文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM