web伺服器物件導向 程序 協程版

2021-08-20 08:47:41 字數 2747 閱讀 2002

1.  協程版注意打補丁來更新gevent的操作.並呼叫spawn來執行任務

# from gevent import monkey

# monkey.patch_all()

2.  程序版需要匯入multiprocessing模組來進行,並建立程序物件,使用start來開啟程序

import re

import socket

import multiprocessing#程序版

class webserver(object):

"""初始化伺服器套接字"""

def __init__(self):

# 初始化伺服器屬性

self.server_soc = socket.socket(socket.af_inet, socket.sock_stream)

self.server_soc.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)  # 設定套接字復用位址

"""從瀏覽器請求裡解析出資源路徑"""

# 獲取請求行

head_line = re.split(r'\r\n', request)

# 獲取請求的資源路徑

request_line = head_line[0]

# 獲取到請求的資源路徑

datas = re.split(r' ', request_line)

# 對路徑的安全檢查

path = datas[1]

if path == '/':

path = '/index.html'

return path

def handle_client(self, client_soc):

"""為乙個客戶端提供服務"""

# 接收請求頭

recv_data = client_soc.recv(1024 * 4)

print(recv_data)

# 判斷客戶端是否關閉

if not recv_data:

print('瀏覽器已經關閉...')

client_soc.close()

return

# 獲取使用者請求的資源路徑

# 捕捉異常,找不到檔案是講返回乙個資料

try:

# 讀取檔案內容

with open('html/index.html', 'rb') as file:

file_content = file.read()

# 返回響應資料

# 讀取404檔案內容

with open('html/404.html', 'rb') as file:

file_content = file.read()

# 返回響應資料

# 關閉套接字

client_soc.close()

def run_server(self):

"""開啟伺服器"""

while true:

# 獲取客戶端連線

print('正在獲取客戶端連線...')

client_soc, client_addr = self.server_soc.accept()

# 為乙個客戶端提供服務

# gevent.spawn(handle_client,client_soc)

p1 = multiprocessing.process(target=self.handle_client, args=(client_soc,))

p1.start()

# 關閉伺服器套接字

server_soc.close()

def main():

"""伺服器模擬並能夠響應瀏覽器的請求"""

# 建立伺服器物件

server = webserver()

# 開啟伺服器

server.run_server()

if __name__ == '__main__':

main()

web伺服器物件導向 長連線

from gevent import monkey monkey.patch all 打補丁 import socket import re import gevent import sys class webserver object def init self,port 初始化伺服器套接字 初始...

多程序 面對物件 web伺服器

整合解析動態請求的功能 瀏覽器請求的資源 靜態資源 動態資源 靜態資源 寫好的固定介面http css js png jpg等 動態資源 重新生成製作的介面 coding utf 8 import socket import re import multiprocessing import time...

HTTP伺服器 物件導向

import socket import gevent import time from gevent import monkey class webserver object 把http伺服器的功能都封裝在webserver類中 documents root html 這裡配置伺服器,配置服務端的...