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...