在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 大型應(yīng)用
應(yīng)用環(huán)境
配置管理
大型應(yīng)用
可插撥視圖
Flask 方案
在 Shell 中使用 Flask
針對(duì)高級(jí)程序員的前言
使用藍(lán)圖的模塊化應(yīng)用
部署方式
信號(hào)
排除應(yīng)用錯(cuò)誤
模板
請(qǐng)求環(huán)境
掌握應(yīng)用錯(cuò)誤
測(cè)試 Flask 應(yīng)用
前言
教程
安裝
快速上手
Flask 擴(kuò)展

大型應(yīng)用

以下是一些建議,當(dāng)你的代碼庫(kù)日益壯大或者應(yīng)用需要規(guī)劃時(shí)可以參考。

閱讀源代碼

Werkzeug ( WSGI )和 Jinja (模板)是兩個(gè)被廣泛使用的工具,而 Flask 起源就是 用于展示如何基于這兩個(gè)工具創(chuàng)建你自己的框架。隨著不斷地開(kāi)發(fā), Flask 被越來(lái)越多 的人認(rèn)可了。當(dāng)你的代碼庫(kù)日益壯大時(shí),不應(yīng)當(dāng)僅僅是使用 Flask ,而更應(yīng)當(dāng)理解它。 閱讀 Flask 的源代碼吧。 Flask 的源代碼閱讀方便,文檔公開(kāi),有利于你直接使用內(nèi)部的 API 。 Flask 堅(jiān)持把上游庫(kù)的 API 文檔化,并文檔化自己內(nèi)部的工具,方便按你的 需要找到掛接點(diǎn)。

掛接,擴(kuò)展

API 文檔隨處可見(jiàn)可用重載、掛接點(diǎn)和信號(hào) 。你可以定制類(lèi)似請(qǐng)求或響應(yīng)對(duì)象的自定義類(lèi)。請(qǐng)深入研究你所使用的 API ,并在 Flask 發(fā)行版中有哪些可以立即使用的可定制部分。請(qǐng)研究你的哪些項(xiàng)目可以重構(gòu)為工具集或 Flask 擴(kuò)展。你可以在 社區(qū)中發(fā)現(xiàn)很多 擴(kuò)展 。如果找不到滿(mǎn)意的, 那就寫(xiě)一個(gè)你自己的吧。

繼承

Flask 類(lèi)有許多方法專(zhuān)門(mén)為繼承而設(shè)計(jì)。你可通過(guò)繼承 Flask (參見(jiàn)鏈接的方法文檔)快速的添加或者定制行為,并把子類(lèi) 實(shí)例化為一個(gè)應(yīng)用類(lèi)。這種方法同樣適用于應(yīng)用工廠 。

用中間件包裝

應(yīng)用調(diào)度 一文中詳細(xì)闡述了如何使用中間件。你可以引入中間件來(lái)包裝你的 Flask 實(shí)例,在你的應(yīng)用和 HTTP 服務(wù)器之間的層有所作為。 Werkzeug 包含許多中間件 。

派生

如果以下建議都沒(méi)有用,那么直接派生 Flask 吧。 Flask 的主要代碼都在 Werkzeug 和 Jinja2 這兩個(gè)庫(kù)內(nèi)。這兩個(gè)庫(kù)起了主要作用。 Flask 只是把它們粘合在一起而已。對(duì)于一個(gè)項(xiàng)目來(lái)講,底層框架的切入點(diǎn)很重要。因?yàn)槿绻恢匾曔@一點(diǎn),那么框架會(huì)變得非常 復(fù)雜,勢(shì)必帶來(lái)陡峭的學(xué)習(xí)曲線(xiàn),從而嚇退用戶(hù)。

Flask 并不推崇唯一版本。許多人為了避免缺陷,都使用打過(guò)補(bǔ)丁或修改過(guò)的版本。這個(gè)理念在 Flask 的許可中也有所體現(xiàn):你不必返回你對(duì)框架所做的修改。

分支的缺點(diǎn)是大多數(shù)擴(kuò)展都會(huì)失效,因?yàn)樾碌目蚣軙?huì)使用不同的導(dǎo)入名稱(chēng)。更進(jìn)一步: 整合上游的變動(dòng)將會(huì)變得十分復(fù)雜,上游變動(dòng)越多,則整合越復(fù)雜。因此,創(chuàng)建分支一般是不得不為之的最后一招。

專(zhuān)家級(jí)的伸縮性

對(duì)于大多數(shù)網(wǎng)絡(luò)應(yīng)用來(lái)說(shuō),最復(fù)雜的莫過(guò)于對(duì)于用戶(hù)量和數(shù)據(jù)量提供良好的伸縮性。 Flask 本身具有良好的伸縮性,其伸縮性受限于你的應(yīng)用代碼、所使用的數(shù)據(jù)儲(chǔ)存方式、 Python 實(shí)現(xiàn)和應(yīng)用所運(yùn)行的服務(wù)器。

如果服務(wù)器數(shù)量增加一倍,你的應(yīng)用性能就增加一倍,那么就代表伸縮性好。如果伸縮性 不好,那么即使增加服務(wù)器的數(shù)量,也不會(huì)得到更好的性能。伸縮性更差的甚至不支持增加第二臺(tái)服務(wù)器。

Flask 中唯一影響伸縮性的因素是環(huán)境本地代理。Flask 中的環(huán)境本地代理可以被定義為線(xiàn)程、進(jìn)程或 greenlet 。如果你的服務(wù)器不支持這些,那么 Flask 就不能支持全局代理。 但是,當(dāng)今主流的服務(wù)器都支持線(xiàn)程、進(jìn)程或 greenlet ,以提高并發(fā)性。 Flask 的基礎(chǔ) 庫(kù) Werkzeug 對(duì)于線(xiàn)程、進(jìn)程或 greenlet 都能夠提供良好的支持。

與社區(qū)溝通

不管你的代碼庫(kù)是否強(qiáng)大, Flask 開(kāi)發(fā)者總是保持框架的可操作性。如果發(fā)現(xiàn) Flask 有 什么問(wèn)題,請(qǐng)立即通過(guò)郵件列表或 IRC 與社區(qū)進(jìn)行溝通。對(duì)于 Flask 及其擴(kuò)展的開(kāi)發(fā)都 來(lái)說(shuō),提升其在大型應(yīng)用中的功能的最佳途徑是傾聽(tīng)用戶(hù)的心聲。

? Copyright 2013, Armin Ronacher. Created using Sphinx.