本書是國內(nèi)外少有的關于 Tornado 框架的專業(yè)技術書籍, 旨在為讀者提供全面、 系統(tǒng)的 Tornado框架開發(fā)指南。 本書從 Tornado 框架的基礎知識入手, 深入介紹 Tornado 框架的核心概念、 應用場景、 開發(fā)技巧方面的內(nèi)容, 重點介紹使用 Vue.js Tornado 進行前后端分離 Web 開發(fā)的具體流程, 快速高效地構(gòu)建高性能、 高并發(fā)的 Web 應用程序等。
本書讀者對象為異步編程的入門人員、 進階人員、 前端程序員等編程愛好者以及 Tornado 框架技術相關院校和培訓機構(gòu)相關師生。
國內(nèi)外領先的關于Python異步Web框架Tornado編程技術
詳細介紹如何通過Vue.js和Tornado來實現(xiàn)前后端分離架構(gòu)
透過完整的工業(yè)級別項目來闡述現(xiàn)代企業(yè)Web工程的實質(zhì)
本書值得你擁有!
基于 Tornado 框架的并發(fā)異步編程技術在當今軟件開發(fā)中具有極其重要的地位,它使我們能夠有效地開發(fā)性能更強、 響應更快、 資源利用率更高的應用程序。
業(yè)內(nèi)關于并發(fā)異步編程的文章和書籍可謂鳳毛麟角、 寥若星辰。 按照固有思維模式看, 并發(fā)異步編程是一項非常復雜的任務, 需要深入了解并發(fā)編程模型、 多線程同步、鎖、死鎖等概念。 對于初學者來說, 學習曲線非常陡峭, 這使得很多作者不敢涉及這個領域。 務實地講, 對并發(fā)異步編程進行系統(tǒng)的介紹和講解, 是本書的創(chuàng)作初衷, 對于并發(fā)異步編程來說, 應該是做出重新評價和選擇的時候了, 現(xiàn)實既提供了條件, 也提出了緊迫的要求。
本書主要結(jié)合前后端分離的系統(tǒng)架構(gòu)來介紹異步非阻塞程序系統(tǒng)的開發(fā)和設計,異步程序可以同時執(zhí)行多個任務, 從而提高系統(tǒng)資源(如 CPU、 內(nèi)存、 磁盤和網(wǎng)絡) 的使用效率。 異步編程則通過非阻塞的方式, 保證程序在等待某些操作完成(如I/O 操作)時, 仍然能夠處理其他任務, 進一步提高了系統(tǒng)資源的利用率。
本書從項目的實際需求提取講起, 循序漸進地深入到 Tornado 基礎與實戰(zhàn), 通過一個工業(yè)級別的完整項目, 重點介紹了使用 Vue.js Tornado 進行 Web 開發(fā)的具體流程, 讓讀者不但可以系統(tǒng)地學習 Tornado 并發(fā)異步編程基礎, 而且還能對企業(yè)內(nèi)部基于 Tornado 實際項目開發(fā)有更為深入的認識和理解。
本書是國內(nèi)外少有的關于 Tornado 并發(fā)異步編程的專業(yè)技術書籍, 宏觀上講, 也是一本企業(yè)級別的異步項目研發(fā)指南。 本書以項目的需求分析作為切入點, 第1 ~2 章詳細介紹 Web 框架的選擇以及如何進行技術預研; 第3 章通過一個簡單的博客項目來介紹Tornado 基礎功能; 第4~9 章通過一個完整的企業(yè)級別的項目來介紹異步項目的研發(fā)流程; 第10 章則介紹研發(fā)完畢后的項目部署環(huán)節(jié)。 如此, 讀者就可以通過本書輕松踏上并發(fā)異步編程開發(fā)之旅, 在實踐過程中豐儉由己地掌握各種并發(fā)異步知識和技能。
最后, 感謝北京航空航天大學出版社張冀青老師不辭辛勞為本書的出版所做的編輯和校審工作。
由于筆者水平有限, 書中難免有不成熟和錯誤的地方, 還望讀者批評斧正。 讀者反饋發(fā)現(xiàn)的問題可發(fā)信至郵箱:zcxey2911 @gmail.com。
作 者
2023 年4 月
目錄
第1 章 項目概述: 分析需求和功能提取
1 .1 分析需求
1 .1 .1 需求描述
1 .1 .2 需求評審
1 .2 功能提取
1 .2.1 功能點列表
1 .2.2 UML
1 .3 項目模塊
1 .3 .1 模塊劃分
1 .3 .2 思維導圖
1 .4 本章總結(jié)
第2 章 技術預研: Web 框架的選擇
2.1 網(wǎng)絡規(guī)范
2.1 .1 WSGI
2.1 .2 ASGI
2.1 .3 面向未來
2.2 Flask 框架
2.2.1 微型框架
2.2.2 功能組件
2.2.3 需求契合
2.3 Tornado 框架
2.3 .1 Epoll
2.3 .2 單線程異步
2.3 .3 功能組件
2.4 本章總結(jié)
第3 章 Tornado 基礎: 初試鋒芒
3 .1 環(huán)境搭建
3 .1 .1 傳統(tǒng)的搭建方式
3 .1 .2 基于 Docker 的搭建方式
3 .1 .3 編輯器的選擇
3 .2 基礎功能
3 .2.1 異步編程
3 .2.2 參數(shù)傳遞
3 .2.3 路由管理
3 .2.4 中間件
3 .2.5 異步 ORM
3 .2.6 跨域處理
3 .2.7 模板引擎
3 .2.8 序列化
3 .3 博客系統(tǒng)
3 .3 .1 項目初始化
3 .3 .2 文章的增刪改
3 .3 .3 首頁展示
3 .3 .4 詳情頁展示
3 .3 .5 Docker 容器式部署
3 .4 本章總結(jié)
第4 章 項目啟動: 進入開發(fā)
4.1 統(tǒng)一編碼規(guī)范
4.1 .1 Pylint 代碼檢查
4.1 .2 開源項目風格
4.2 版本控制規(guī)范
4.2.1 Git 基礎
4.2.2 Git 操作流程
4.2.3 Git 具體操作
4.3 項目結(jié)構(gòu)規(guī)范
4.3 .1 項目結(jié)構(gòu)目錄
4.3 .2 單一入口
4.3 .3 數(shù)據(jù)庫模型
4.3 .4 前后端解耦
4.3 .5 模板嵌套
4.4 本章總結(jié)
第5 章 用戶模塊
5 .1 用戶注冊
5 .1 .1 數(shù)據(jù)模型
5 .1 .2 注冊接口
5 .1 .3 密碼加密
5 .1 .4 唯一驗證
5 .1 .5 注冊頁面
5 .1 .6 郵箱驗證
5 .2 用戶登錄
5 .2.1 登錄接口
5 .2.2 JWT 令牌
5 .2.3 登錄頁面
5 .2.4 圖像驗證碼
5 .2.5 用戶認證
5 .3 三方登錄
5 .3 .1 Github 三方登錄
5 .3 .2 工廠模式封裝
5 .4 Web 3 .0
5 .4.1 MetaMask
5 .4.2 錢包登錄
5 .5 用戶權限
5 .5 .1 數(shù)據(jù)模型
5 .5 .2 權限控制
5 .5 .3 后臺管理
5 .6 本章總結(jié)
第6 章 課程模塊
6 .1 課程分類
6 .1 .1 數(shù)據(jù)模型
6 .1 .2 遞歸算法
6 .1 .3 分類展示
6 .2 課程發(fā)布
6 .2.1 數(shù)據(jù)模型
6 .2.2 文件上傳
6 .2.3 分片上傳
6 .2.4 發(fā)布接口
6 .2.5 發(fā)布頁面
6 .3 課程展示
6 .3 .1 課程首頁
6 .3 .2 分頁邏輯
6 .3 .3 課程詳情頁
6 .4 課程瀏覽排行榜
6 .4.1 有序集合
6 .4.2 瀏覽量存儲與展示
6 .4.3 排行榜展示
6 .4.4 N 1 問題
6 .5 課程檢索
6 .5 .1 模糊查詢
6 .5 .2 檢索頁面
6 .5 .3 全文檢索
6 .5 .4 Redisearch 安裝
6 .5 .5 全文檢索數(shù)據(jù)同步
6 .5 .6 全文檢索接口
6 .6 課程管理
6 .6 .1 封裝操作類
6 .6 .2 管理接口
6 .6 .3 管理頁面
6 .7 課程緩存
6 .7.1 緩存邏輯
6 .7.2 緩存裝飾器
6 .8 本章總結(jié)
第7 章 課程審核
7.1 審核隊列
7.1 .1 基于列表實現(xiàn)
7.1 .2 優(yōu)先級隊列
7.2 觸發(fā)審核任務
7.2.1 被動觸發(fā)
7.2.2 主動觸發(fā)
7.3 審核管理
7.3 .1 審核操作接口
7.3 .2 審核管理頁面
7.3 .3 審核任務加權分配
7.4 本章總結(jié)
第8 章 支付模塊
8.1 課程訂單
8.1 .1 數(shù)據(jù)模型
8.1 .2 生成訂單
8.1 .3 訂單管理
8.2 三方支付
8.2.1 前期準備
8.2.2 支付基類
8.2.3 支付接口
8.2.4 退 款
8.3 跨境支付
8.3 .1 前期準備
8.3 .2 支付類
8.3 .3 支付接口
8.3 .4 退 款
8.4 訂單輪詢
8.4.1 延時隊列
8.4.2 訂單查詢
8.4.3 輪詢服務
8.5 本章總結(jié)
第9 章 消息推送與客服
9 .1 Websocket 協(xié)議
9 .1 .1 Tornado 實現(xiàn) Websocket
9 .1 .2 Vue.js 鏈接 Websocket
9 .1 .3 Websocket 認證
9 .1 .4 Websocket 心跳重連
9 .2 消息系統(tǒng)
9 .2.1 消息推送
9 .2.2 消息記錄
9 .2.3 消息展示
9 .3 在線客服
9 .3 .1 信息隔離
9 .3 .2 聊天界面
9 .4 AI 客服
9 .4.1 深度學習
9 .4.2 模型訓練
9 .4.3 接口調(diào)用
9 .4.4 三方接入
9 .4.5 ChatGPT
9 .5 本章總結(jié)
第10 章 項目部署
10.1 傳統(tǒng)式部署
10.1 .1 配置 Python 3 .10 環(huán)境
10.1 .2 配置數(shù)據(jù)庫
10.1 .3 配置Supervisor
10.1 .4 配置 Nginx
10.1 .5 配置域名解析
10.1 .6 配置https
10.2 Docker 容器式部署
10.2.1 安裝 Docker
10.2.2 修改配置
10.2.3 打包鏡像
10.2.4 鏡像上傳
10.3 容器編排
10.3 .1 Docker-Compose
10.3 .2 Kubernetes
10.4 本章總結(jié)
10.5 結(jié)束語
參考文獻