Python Web開發實戰

Python Web開發實戰

《Python Web開發實戰》 作者董偉明,由電子工業出版社出版。

基本信息

作 譯 者:董偉明

出版時間:2016-09

千 字 數:616

版 次:01-01

頁 數:516

開 本:16開

I S B N :9787121297335

內容簡介

本書按照一個Web 產品從無到有、從簡單變複雜、從基礎到進階的過程,多角度、全方位講述了Python Web開發。內容涉及Web框架、測試、資料庫、訊息佇列、服務化、持續集成等,把網站工程的全貌展現在讀者的眼前,從其中可以了解Web工程從開發到上線的完整流程。另外,作者對當前現在正在流行的技術或工具,如Flask、Celery、Jupyter、Supervisor、SaltStack、Pandas等都有較為詳細的闡述,可作為技術選型時的參考。對於Web 開發者、使用Python 語言的運維工程師和運維開發工程師、想提高Python 技能的開發者、想了解Python Web 開發的其他開發者,本書都適合閱讀。

目錄

第1 章初識Python Web 開發1

Python Web 開發介紹1

為什麼應該選擇Python 作為Web 開發語言2

選擇Python 2 還是Python 3 2

Web 框架介紹3

主流Web 框架3

小眾的Web 框架5

選擇Web 框架時應遵循的原則5

第2 章Web 開發前的準備7

搭建一個能運行的虛擬機環境7

安裝VirtualBox 8

使用Vagrant 安裝8

使用Docker 安裝10

包管理和虛擬環境13

包管理13

使用pip 替代easy_install 13

distribute、distutils 和setuptools 14

entry_points 15

外掛程式系統16

虛擬環境17

virtualenv 18

virtualenv 定製化18

virtualenvwrapper 21

virtualenv-burrito 23

autoenv 24

進階篇:pip 高級用法25

命令自動補全25

普通用戶安裝25

編輯模式25

使用devapi 作為快取代理伺服器26

PYPI 的完全鏡像27

第3 章Flask Web 開發 28

Flask 入門29

安裝Flask 29

從Hello World 開始29

配置管理31

調試模式32

動態URL 規則32

自定義URL 轉換器33

HTTP 方法34

唯一URL 35

構造URL 36

跳轉和重定向36

回響38

靜態檔案管理40

即插視圖40

藍圖43

子域名43

命令行接口44

模板46

Jinja2 46

Mako 52

使用MySQL 60

安裝MySQL 和驅動61

設定套用賬號和許可權61

用MySQLdb 寫原生語句62

事務提交和回滾63

ORM 簡介64

使用SQLAlchemy 65

使用ORM 67

資料庫關聯69

在Flask 中使用SQLAlchemy 71

記錄慢查詢73

理解Context 74

本地執行緒74

Werkzeug 的Local 75

flask.request 76

使用上下文77

使用LocalProxy 替代g 80

從零開始實現一個檔案託管服務80

首頁84

重新設定圖片頁86

下載頁87

預覽頁87

短連結頁88

第4 章Flask 開發進階 89

Flask 的信號機制89

Blinker 的使用89

Flask 中內置的信號90

自定義信號92

信號訂閱的高級用法92

Flask-Login 中的信號93

Flask 的擴展95

Flask-Script 95

Flask-DebugToolbar 97

Flask-Migrate 98

Flask-WTF 100

Flask-Security 102

Flask-RESTful 109

Flask-Admin 111

Flask-Assets 115

Werkzeug 的使用118

DebuggedApplication 118

數據結構120

功能函式121

密碼加密122

中間件123

第5 章REST 和Ajax 127

什麼是REST 127

RESTful API 設計指南128

使用名詞來表示資源128

關注請求頭129

合理使用請求方法和狀態碼129

正確地使用REST 130

對輸出的結果不再包裝131

不要做出錯誤的提示131

使用嵌套對象序列化131

版本132

URI 失效和遷移132

信息過濾132

速度限制133

快取133

並發控制134

使用Ajax 135

第6 章網站架構. 140

Python 套用伺服器140

WSGI 協定141

常見的WSGI 容器141

Web 伺服器Nginx 143

Web 伺服器與套用伺服器的區別143

為什麼要選擇Nginx 143

安裝Nginx 144

使用Nginx 部署Flask 套用144

快取系統Memcached 149

Libmc 安裝配置150

使用原生SQL 快取152

快取更新策略157

Memcached 使用的經驗157

鍵值對資料庫Redis 157

操作Redis 158

Redis 套用場景159

分片和集群管理168

NoSQL 資料庫MongoDB 169

為什麼使用NoSQL 169

MongoDB 169

使用pymongo 的例子171

使用Mongoengine 的例子174

MongoDB 實踐經驗176

大型網站架構經驗182

快取183

負載均衡183

高可用184

業務拆分184

集群184

第7 章系統管理 186

進程管理Supervisor 186

Supervisor 組件187

配置Supervisor 187

使用Supervisor 190

套用部署Fabric 193

Fabric 套用接口194

使用Fabric 管理Flask 套用197

配置管理工具SaltStack 和Ansible 199

SaltStack 200

Ansible 207

使用Psutil 213

使用Sentry 收集錯誤信息215

安裝配置Sentry 216

啟動Sentry 218

創建團隊和項目218

配置SDK 220

使用StatsD、Graphite 等搭建Web 監控223

配置Graphite 225

使用StatsD 226

配置Diamond 227

發布指標項227

使用Grafana 228

使用Kenshin 232

第8 章測試和持續集成 233

使用unittest 和doctest 做測試233

unittest 233

doctest 236

使用py.test 和mock 237

py.test 237

mock 241

持續集成243

使用Tox 集成248

第9 章訊息佇列和Celery 250

使用Beanstalkd 251

使用Beanstalkc 252

深入理解RabbitMQ 253

AMQP 254

虛擬主機258

外掛程式系統258

通過Web 和REST API 管理RabbitMQ 259

故障轉移262

使用Celery 262

Celery 的架構263

Celery 序列化265

安裝配置Celery 265

從一個簡單的例子開始265

指定佇列268

使用任務調度269

任務綁定、記錄日誌和重試270

在Flask 套用中使用Celery 271

深入理解Celery 274

Celery 的依賴274

任務調用277

信號系統278

Worker 管理279

監控和管理Celery 280

子任務281

進階篇:Celery 最佳實踐283

使用自動擴展283

善用遠程Debug 283

合理安排任務周期284

合理使用佇列和優先權285

保證業務邏輯的事務性285

關閉你不想要的功能285

使用閱後即焚模式285

善用Prefetch 模式286

善用工作流286

第10 章服務化 288

為什麼需要服務化288

RPC 框架289

服務化帶來的問題290

微服務架構290

使用ri 291

定義IDL 檔案292

服務端實現294

客戶端實現297

PIDL——豆瓣的服務化實踐301

PIDL 架構302

第11 章數據處理 305

使用MapReduce 做日誌分析305

使用MapReduce 305

使用DPark 309

分散式檔案系統MooseFS 309

Mesos 310

配置DPark 環境311

從WordCount 開始314

PV & UV 統計316

數據報表320

傳送帶有樣式和附屬檔案的郵件320

創建xlsx 檔案325

使用Pandas 328

Pandas 入門329

讀取MySQL 資料庫332

和Flask 套用集成332

第12 章幫助工具. 336

IPython 336

IPython 互動模式338

常用的Magic 函式338

配置和自定義IPython 341

IPython 的擴展系統342

使用IPython 調試複雜代碼343

雙進程模型344

並行計算345

Jupyter Notebook 347

Notebook 格式350

Notebook 格式轉換和預覽351

為什麼使用RequireJS 352

在Notebook 里使用Echarts 353

富顯示355

自定義JavaScript 和CSS 樣式356

使用nbextension 擴展Notebook 358

在Notebook 上使用並行計算359

調試和Debug 工具360

了解Linux 伺服器運行情況360

性能測試366

Python 程式性能分析369

性能調優實踐373

進階篇:定製基於IPython 的互動解釋環境374

進階篇:豆瓣東西的Jupyter Notebook 實踐376

第13 章Python 並發編程383

使用多執行緒385

使用Gevent 392

使用多進程399

使用Future 406

使用asyncio 408

async/await 409

Future 412

使用aiohttp 414

使用佇列416

第14 章Python 進階 418

使用標準庫模組418

errno 419

subprocess 420

contextlib 421

glob 424

operator 424

functools 426

collections 428

Python 語法最佳實踐432

命名434

目錄xxix

使用join 連線字元串435

EAFP vs LBYL 435

定義類的__str__/__repr__ 方法436

優美的Python 437

從Python 3 移植439

partialmethod 439

singledispatch 440

suppress 442

redirect_stdout/redirect_stderr 443

使用CFFI/Cython 編寫Python 擴展444

使用CFFI 444

使用Cython 447

進階篇:使用PyObjC 傳送通知451

第15 章Web 開發項目實踐455

Web 項目經驗總結455

開發流程455

使用合理的項目結構456

關注代碼複雜度457

代碼質量保證工具457

Pycodestyle 對中文縮進的處理458

Flake8 459

Pylint 460

其他代碼質量保證工具461

使用AST 做靜態檢查461

其他靜態檢查工具467

編寫Flake8 擴展468

代碼評審的意義470

作為被評審者471

作為評審者472

評審的標準473

作者簡介

董偉明,豆瓣高級產品開發工程師,主要負責豆瓣讀書、電影、音樂、東西等產品線。從2011年開始接觸Python, 從運維、運維開發到現在的Web開發,積累了豐富的運維和開發經驗,作者積極參與開源項目,給IPython、pip及Python標準庫等貢獻過代碼。這本書將作者這些年使用Python進行Web開發,對各方面知識的理解和積累的經驗進行梳理和總結。

相關詞條

相關搜尋

熱門詞條

聯絡我們