Python Web開發實戰 Python Web开发实战

董偉明

  • 出版商: 電子工業出版社
  • 出版日期: 2016-09-01
  • 定價: CNY $105.00
  • 售價: $630
  • 貴賓價: 9.5$599
  • 語言: 簡體中文
  • 頁數: 474
  • 裝訂: 平裝
  • ISBN: 7121297337
  • ISBN-13: 9787121297335

立即出貨

買這商品的人也買了...

商品描述

<內容簡介>

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