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

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

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

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

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

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

虛擬環境建立示例

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

python -m venv flask

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

activate.bat

激活虛擬環境後,可經過pip安裝flask模塊flask

pip install flask

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

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.pyapi

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安裝配置見參考文檔

相關文章
相關標籤/搜索