Django 學(xué)習(xí)筆記-1 socket 和 WSGI

1. 用 socket 實現(xiàn)一個簡單的 Web 服務(wù)器

#! python3

import socket


def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 開啟socket
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 清除IP和端口占用
    sock.bind(('localhost', 8000))  # 綁定IP和端口到套接字
    sock.listen(3)  # 監(jiān)聽刚夺,5表示客戶端最大連接數(shù)

    while True:
        conn, addr = sock.accept()
        data = conn.recv(1024)  # 接收數(shù)據(jù)大小為1024字節(jié)
        print(data)

        conn.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html; charset=utf-8\r\n\r\n')
        conn.send('Hello, World!'.encode('utf-8'))
        conn.close()


if __name__ == "__main__":
    main()

2. 用 wsgiref 實現(xiàn)一個簡單的 Web 服務(wù)器

wsgiref 是 WSGI 規(guī)范的范例實現(xiàn)卤妒,而 WSGI(Python Web Server Gateway Interface ) 即 Web服務(wù)器網(wǎng)關(guān)接口,是為 Python 語言定義的 Web 服務(wù)器和 Web 應(yīng)用程序或框架之間的一種簡單而通用的接口。

#! python3

from wsgiref.simple_server import make_server


def app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [b'<h1>Hello, world!</h1>']


def main():
    my_server = make_server('localhost', 8000, app)
    my_server.serve_forever()


if __name__ == '__main__':
    main()

2.1 增加支持多路由功能

#! python3

from wsgiref.simple_server import make_server


def index():
    return [b'<h1>Hello, world!</h1>']


def hello():
    return [b'<h1>Hello!</h1>']


def world():
    return [b'<h1>World!</h1>']


urls = {
    '/': index,
    '/hello': hello,
    '/world': world
}


def app(environ, start_response):
    request_url = environ.get('PATH_INFO')
    if request_url in urls:
        start_response('200 OK', [('Content-Type', 'text/html')])
        return urls[request_url]()
    else:
        start_response('404 NOT FOUND', [('Content-Type', 'text/html')])
        return [b'<h1>404, Page Not Found!</h1>']


def main():
    my_server = make_server('localhost', 8000, app)
    my_server.serve_forever()


if __name__ == '__main__':
    main()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載李破,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者番川。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吭产,隨后出現(xiàn)的幾起案子个从,更是在濱河造成了極大的恐慌,老刑警劉巖歪沃,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗦锐,死亡現(xiàn)場離奇詭異,居然都是意外死亡沪曙,警方通過查閱死者的電腦和手機奕污,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來液走,“玉大人碳默,你說我怎么就攤上這事≡悼簦” “怎么了嘱根?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巷懈。 經(jīng)常有香客問我该抒,道長,這世上最難降的妖魔是什么顶燕? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任凑保,我火速辦了婚禮,結(jié)果婚禮上涌攻,老公的妹妹穿的比我還像新娘欧引。我一直安慰自己,他們只是感情好恳谎,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布芝此。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪癌蓖。 梳的紋絲不亂的頭發(fā)上瞬哼,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音租副,去河邊找鬼坐慰。 笑死,一個胖子當(dāng)著我的面吹牛用僧,可吹牛的內(nèi)容都是我干的结胀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼责循,長吁一口氣:“原來是場噩夢啊……” “哼糟港!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起院仿,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秸抚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后歹垫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剥汤,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年排惨,在試婚紗的時候發(fā)現(xiàn)自己被綠了吭敢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡暮芭,死狀恐怖鹿驼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辕宏,我是刑警寧澤畜晰,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站匾效,受9級特大地震影響舷蟀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜面哼,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一野宜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧魔策,春花似錦匈子、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽游岳。三九已至,卻和暖如春其徙,著一層夾襖步出監(jiān)牢的瞬間胚迫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工唾那, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留访锻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓闹获,卻偏偏與公主長得像期犬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子避诽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容