面向對象的服務器-支持動態解析-服務器的框架解耦-支持框架的服務器-WGSI協議-支持WGSI協議的服務器-字典傳參-給程序傳參數

后端——>Django框架——>用Python寫的

要想自己改Django,先得了解框架,學會mini-web框架,學mini-web框架,需要遵守WSGI協議

要實現mini-web的流程

在sublime里Ctrl+h:全局替換

保證兩邊都close掉了,內存都被釋放掉,不然用戶一多就爆掉了

進程之間都是獨立的,才需要;多線程是共享的,不需要;攜程也不需要


一、面向對象的服務器

二、支持動態解析

返回數據時不是直接返回——>需要組拼請求頭和請求體再返回

請求頭里有User-Agent:(主要識別客戶所用的操作系統瀏覽器的版本)

? ? ? ? ? ? 1)User-Agent:爬蟲時一定要有

? ? ? ? ? ? 2)User-Agent會告訴網站服務器,訪問者是通過什么工具來請求的,如果是用戶瀏覽器,就會應答

以上遵循HTTP協議

三、服務器的框架解耦-支持框架的服務器

四、WGSI協議

如何可以不修改服務器和架構代碼而確保可以在多個架構下運行web服務器呢?——WSGI

WSGI協議規定:

1.? ? 服務器調用框架時,必須告訴瀏覽器請求的是啥

2.? ? 框架在返回數據時規定怎么給

要想遵循協議,首先框架里必須要有一個可以直接調的函數,傳來的參數正常有兩個——一個是字典,另一個是函數(函數的引用)

????????????????????????瀏覽器請求動態頁面過程

五、支持WGSI協議的服務器-字典傳參

body = mini_frame027.application(env, self.set_response_header) # 第69行黃色框

括號里的兩個參數分別是字典和函數

函數(, ,頭信息是一個列表)# 第86行紅色框

頭信息傳過來是列表,列表里的每一個元素是元組,元組里鍵值對,:前是鍵,:后是值

environ:一個包含所有HTTP請求信息的dict對象;

start_response:一個發送HTTP響應的函數。

六、給程序傳參數

以字符串形式傳參:傳任何數據都以字符串形式對待

端口被占用,程序運行不了解決方案:換端口

去web服務器導入,main方法運行程序

端口正確
實例化時把接收的端口port傳進去??
init接收端口,綁定不能寫死,改為port


http服務器做成通用的

好處:可以隨意調用哪個模塊下的哪個函數

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯系作者。