之前介紹過flask框架的基礎應用,這篇主要介紹下項目中flask框架裏的實操應用,如果對您有用,請記得關注,點贊,同時也歡迎大家留言討論。
ps: 爲方便,用的pycharm,windows演示的。
項目結構技巧
先貼出演示項目的目錄
app文件夾主要存放項目中的主要代碼
- models文件夾存放數據模型類的文件(數據庫的表模型)
- static 存放靜態資源(一般不用了)
- templates 常用存放html資源文件
- utils 存放一些要用的工具類文件
- views 存放視圖類文件(路由)
scheduler 文件夾主要存放一些項目中要用到的定時腳本
worker 文件夾主要存放一些項目中要用到的異步耗時任務
app.py 文件爲項目的啓動文件
config.py 文件爲項目的配置文件
xxxx.sh文件爲封裝的啓動腳本
裝飾器使用技巧
裝飾器在flask項目中常用的有4個地方
- 藍圖中的路由使用到這個。如上圖的index.route()
- 用戶鑑權用到這個.如上圖的auth_login()
- 在使用裝飾器後,爲了保留原函數的屬性,使用functools.wraps(method),如果不加這個的話,index.name 返回的結果是wrapper而不是index.
- 在異步腳本中使用,celery.task標記是一個celery類型任務函數
日誌服務使用技巧
項目中主要是封裝logger模塊來實現日誌,大致流程就是
- 創建一個logger對象,定義logger的等級。
- 創建日誌流對象,設置流對象的格式
- 在logger對象的執行任務中增加流對象輸出。
樣式如下圖:
正常工作中還會根據日誌的等級把日誌存到文件中,例如把info和debug存到1個文件。error存到一個文件中。
更完善點的 會接入預警模塊 類似centry模塊實時給開發者發送錯誤提醒。
異步腳本使用技巧
這裏異步腳本 一般我用的是celery模塊實現。
使用規則很簡單。
- config.py中配置celery參數。
- 異步任務函數用celery.task()裝飾器修飾。
- 調用函數的時候 用 函數名.apply_async((),{},countdown=延時時間) 去執行
- 提前開啓異步任務腳本 python -m celery --app=worker.celery worker -c 8 --loglevel=info
如果是在windows上學習,需要
pip install eventlet
python -m celery --app=worker.celery worker -c 8 --loglevel=info -P eventlet
定時器使用技巧
定時器功能的實現我用的是 apscheduler
使用流程主要是
- 設置定時器的線程數量,創建定時器對象
- 編寫定時任務代碼,添加到定時器對象中
- 啓動定時器任務
當然 爲了看到日誌,需要加上日誌功能,流程和日誌功能一樣。演示中我定時了一個3秒一次的定時任務。輸出如下。
以上大致說了下項目中的一些功能模塊的使用方法。後面再針對每個模塊詳細再講些下。
附上演示項目代碼
鏈接: 項目代碼github地址.
希望對大家有幫助。