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