Python Web靜態伺服器 gevent版

2021-09-26 14:19:28 字數 3110 閱讀 8089

from gevent import monkey

import gevent

import socket

import sys

import re

monkey.patch_all()

class wsgiserver(object):

"""定義乙個wsgi伺服器的類"""

def __init__(self, port, documents_root):

# 1. 建立套接字

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

# 2. 繫結本地資訊

self.server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

self.server_socket.bind(("", port))

# 3. 變為監聽套接字

self.server_socket.listen(128)

self.documents_root = documents_root

def run_forever(self):

"""執行伺服器"""

# 等待對方鏈結

while true:

new_socket, new_addr = self.server_socket.accept()

gevent.spawn(self.deal_with_request, new_socket) # 建立乙個協程準備執行它

def deal_with_request(self, client_socket):

"""為這個瀏覽器伺服器"""

while true:

# 接收資料

request = client_socket.recv(1024).decode('utf-8')

# print(gevent.getcurrent())

# print(request)

# 當瀏覽器接收完資料後,會自動呼叫close進行關閉,因此當其關閉時,web也要關閉這個套接字

if not request:

new_socket.close()

break

request_lines = request.splitlines()

for i, line in enumerate(request_lines):

print(i, line)

# 提取請求的檔案(index.html)

print("正則提取資料:", ret.group(1))

print("正則提取資料:", ret.group(2))

file_name = ret.group(2)

if file_name == "/":

file_name = "/index.html"

file_path_name = self.documents_root + file_name

try:

f = open(file_path_name, "rb")

except:

# 如果不能開啟這個檔案,那麼意味著沒有這個資源,沒有資源 那麼也得需要告訴瀏覽器 一些資料才行

# 404

response_body = "沒有你需要的檔案......".encode("utf-8")

# 響應的body資訊

response_body = content

# 響應頭資訊

# 設定伺服器服務靜態資源時的路徑

documents_root = "./html"

def main():

"""控制web伺服器整體"""

# python3 ***x.py 7890

if len(sys.ar**) == 2:

port = sys.ar**[1]

if port.isdigit():

port = int(port)

else:

print("執行方式如: python3 ***.py 7890")

return

print("http伺服器使用的port:%s" % port)

pythonweb靜態伺服器 靜態Web伺服器

靜態web伺服器 可以發出請求的瀏覽器提供靜態文件的程式。搭建python自帶靜態web伺服器 如何搭建python自帶的靜態web伺服器 windows可以實現資源共享的目的 語法 python m http.server 埠號 1.win r 輸入cmd進入命令指令視窗 2.切換目錄,選擇目錄建...

Python Web靜態伺服器 非堵塞模式

coding utf 8 from socket import import time 用來儲存所有的新鏈結的socket g socket list list def main server socket socket af inet,sock stream server socket.setso...

python web伺服器 與 爬蟲獲取

所遇到的困難 3.在當前 資料夾 中 開啟 命令提示符 shift 滑鼠右鍵 點選 powershell 即是,進入d盤 d 返回上一級目錄 cd.後有兩個點 4.python 做 web伺服器 時 電腦名字中不能有中文 5.python 後台 中 python中寫 from flask impor...