用python擼出乙個靜態web伺服器

2021-08-06 01:32:28 字數 2057 閱讀 7723

儲備知識

web伺服器基本原理

大致流程

在服務端建立tcp服務程序,為了保證服務端可以同時處理多個請求,我們需要在每接受乙個請求後為其單獨使用乙個執行緒(或者程序)為其進行服務。

server = socket(af_inet, sock_stream)

server.setsockopt(sol_socket, so_reuseaddr, 1)

address = ('', 9876)

server.bind(address)

server.listen(10)

try:

while

true:

print("-------等待接受服務----------")

client, client_address = server.accept()

print("-------接受服務成功----------")

# 如果使用程序服務,可以在在後面把client關閉。

p = thread(target=deal_socket, args=(client,))

p.start()

except exception as e:

print(e)

finally:

server.close()

print("-------服務結束----------")

這裡的deal_socket函式就是我們為乙個請求服務的函式,在乙個單獨的執行緒中執行。

在處理url請求的函式中,我們需要讀取出客戶端的http請求。

def

deal_socket

(client):

print("-------開啟新的執行緒----------")

print("-------關閉新的執行緒----------")

get_request_name_from_http函式中我們需要從原始的url請求中解析出http請求中我們需要的請求資源部分,這裡我們可以通過正規表示式完成簡單的完成解析。

# 注意這裡通過非貪婪模式匹配

return filename在解析到請求的靜態位址後就是簡單的讀取請求的檔案,然後已http協議的格式返回回去就行了。

完整**

自己動手擼乙個靜態部落格生成器

國慶期間試著擼了個靜態部落格工具 歡迎一起交流 github.com laoqiren yo npm npm npm 乙個靜態部落格生成器,採用node.js開發。yohe 喲呵,乙個會讓你發出 喲呵,不錯哦 感嘆的靜態部落格生成器。線上demo luoxia.me yohe site englis...

純手擼乙個rnn

原文 import copy,numpy as np np.random.seed 0 sigmoid函式 def sigmoid x output 1 1 np.exp x return output sigmoid導數 def sigmoid output to derivative outpu...

從頭擼乙個單鏈表

醉裡挑燈看劍,夢回吹角連營 最近在學習單鏈表時,對於單鏈表的頭節點指標的建立,以及如何給乙個鍊錶存入資料,這塊理解不是很到位。雖然明白鍊錶的基本操作,建立 插入 刪除 索引,但用 實現還是遇到一些問題難以理解,故寫一些 進行分析,終於弄清楚其實現過程,在此作一小結。插入新的節點 刪除節點分析 實現 ...