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