一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

9

 TIANSHIBWG 2021-06-21

一、考點聚焦

WSGI;常見web框架
1.什么是WSGI?
2.常用的 Python Web框架 Django/Flask/Tornado對比
3.Web框架的組成(淡化框架、加強基礎(chǔ))

二、什么是WSGI?

為什么需要它?我們經(jīng)常使用uwsgi/gunicorn來部署Django/Flask應(yīng)用,為什么Flask/Django都可以運行在gunicorn之上?
1.Python Web Server Gateway Interface(pep3333)
2.解決 Python Web Server亂象 mod_python, CGI, FastCGI
3.描述了Web Server(Gunicorn/uWSGI)如何與Web框架(Flask/Django)交互,Web框架如何處理請求

def application(environ, start_response)
  • application就是WSGI app,一個可調(diào)用對象
  • 參數(shù):
    • environ :一個包含 WSGI環(huán)境信息的字典,由WSGI服務(wù)器提供,常見的 keyPATH_INFO, QUERY_STRING
    • start_response:生成WSGI響應(yīng)的回調(diào)函數(shù),接收兩個參數(shù),statusheaders
  • 函數(shù)返回響應(yīng)體的迭代器

我們編寫一個兼容 WSGIweb小應(yīng)用:

def myapp(environ, start_response):
print9environ['QUERY_STRING']   # web server 把HTTP參數(shù)信息通過 environ 傳遞給 web 框架
status = '200 ok'
headers = [('Content-Type', 'text/html; charset=utf8')]

start_response(status, headers)
return [b'<h1>Hello World</h1>']  # 可迭代對象,返回 字節(jié)

if __name__ == '__main__':
from wsgiref.simple_server import make_server
httpd = make_server('127.0.0.1', 8888, myapp)
httpd.serve_forever()

運行結(jié)果:
在這里插入圖片描述

在這里插入圖片描述
封裝示例:

class Application:
def __init__(self, routers, **kwargs):
self.routers = routers

def __call__(self, environ, start_response):
try:
request = Request(environ)
callback, args = routers.match(request.path)
response = callback(request, *args)
except NotFoundError:
response = Response("<h1>Not Found</h1>", status=404)

start_response(response.status, response.headers.items())
return iter(response)

三、常用的Python Web框架對比

Django vs Flask vs Tornado
1.Django:大而全,內(nèi)置ORM、Admin等組件,第三方插件較多
2.Flask:微框架,插件機制,比較靈活。(可以用cookiecutter-flask生成統(tǒng)項目模板)
3.Tornado:異步支持的微框架和異步網(wǎng)絡(luò)庫

四、什么是MVC?

MVC:模型(Model),視圖(View),控制器(Controller)
是為了解耦數(shù)據(jù)、展示和操作
1.Model:負責(zé)業(yè)務(wù)對象和數(shù)據(jù)庫的交互(ORM
2.View:負責(zé)與用戶的交互展示
3.Controller:接收請求參數(shù)調(diào)用模型和視圖完成請求

處理流程:
在這里插入圖片描述

五、什么是ORM?

Object Relational Mapping,對象關(guān)系映射。比如:Sqlalchemy、Django ORM、Peewee
1.用于實現(xiàn)業(yè)務(wù)對象與數(shù)據(jù)表中的字段映射。
2.優(yōu)勢:代碼更加面向?qū)ο?,代碼量更少,靈活性高,提升開發(fā)效率
3.缺點:拼接對象比較耗時,有一定性能影響

六、一個Web框架的組成?

1.中間件,用于請求之前和請求之后做一些處理(比如記錄日志等)
2.路由、表單驗證、權(quán)限認證,ORM,視圖函數(shù),模板渲染,序列化
3.第三方插件:Redis連接,RESTful支持等

七、什么是Gunicorn?

GunicornPython WSGI HTTP Server
1.純Python編寫的高性能的WSGI Server
2.pre-fork預(yù)先分配多個worker進程處理請求(master-slave)
3.多種workder支持:Sync/Async(Gevent)/Tornado/AsyncIO
在這里插入圖片描述
在這里插入圖片描述

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美成人黄色一区二区三区| 91插插插外国一区二区婷婷| 婷婷色香五月综合激激情| 中文字幕av诱惑一区二区| 欧美日韩无卡一区二区| 国产精品丝袜美腿一区二区| 欧美国产日韩在线综合| 国产欧美日本在线播放| 九九九热视频最新在线| 国产丝袜美女诱惑一区二区| 亚洲天堂精品在线视频| 国产又粗又深又猛又爽又黄| 久久成人国产欧美精品一区二区 | 免费一区二区三区少妇| 精品日韩中文字幕视频在线| 俄罗斯胖女人性生活视频| 欧美日韩精品综合一区| 色婷婷视频在线精品免费观看| 国产精品免费不卡视频| 免费午夜福利不卡片在线 视频| 精品人妻一区二区三区免费| 日韩性生活视频免费在线观看 | 久久经典一区二区三区| 国产成人av在线免播放观看av| 自拍偷女厕所拍偷区亚洲综合| 日韩国产传媒在线精品| 午夜视频免费观看成人| 一二区不卡不卡在线观看| 又大又紧又硬又湿又爽又猛| 美国欧洲日本韩国二本道| 亚洲av秘片一区二区三区| 欧美午夜色视频国产精品| 国产精品超碰在线观看| 久久精品国产亚洲av久按摩| 黑鬼糟蹋少妇资源在线观看| 国产自拍欧美日韩在线观看| 日本精品最新字幕视频播放| 日韩精品视频一二三区| 国产亚洲视频香蕉一区| 欧美日韩综合在线第一页| 色婷婷激情五月天丁香|