Web靜態伺服器03 多程序

2021-08-27 14:05:07 字數 2419 閱讀 7367

#coding=utf-8

import socket

import re

import multiprocessing

class wsgiserver(object):

def __init__(self, server_address):

# 建立乙個tcp套接字

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

# 允許立即使用上次繫結的port

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

# 繫結

self.listen_socket.bind(server_address)

# 變為被動,並制定佇列的長度

self.listen_socket.listen(128)

def serve_forever(self):

"迴圈執行web伺服器,等待客戶端的鏈結並為客戶端服務"

while true:

# 等待新客戶端到來

client_socket, client_address = self.listen_socket.accept()

print(client_address) # for test

new_process = multiprocessing.process(target=self.handlerequest, args=(client_socket,))

new_process.start()

# 因為子程序已經複製了父程序的套接字等資源,所以父程序呼叫close不會將他們對應的這個鏈結關閉的

client_socket.close()

def handlerequest(self, client_socket):

"用乙個新的程序,為乙個客戶端進行服務"

# 設定伺服器的埠

server_addr = (host, port) = "", 8888

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

Web伺服器 併發伺服器 多程序(3 4 1)

目錄 在單程序的時候,相當於 是來乙個客戶,派乙個人去服務一下 效率低,現在使用多程序來服務 假設場景 100個人同時訪問頁面 單程序 一次處理,後面的會等待時間長 多程序 併發處理,一起處理 當然程序不能越多越好,硬體不支援 執行緒的開銷比程序少,但最好使用協程 注意 用process來建立子程序...

多程序伺服器

基於tcp實現多程序伺服器 伺服器端 1 建立套接字 include include int socket int domain,int type,int protocol domain 乙個位址描述。目前僅支援af inet格式,也就是說arpa internet位址格式。type 指定socke...

多程序伺服器

注意 包含了 wrap.c 和 wrap.h 檔案在上篇部落格中 server.c include include include in.h include include include include include include wrap.h define maxline 8192 defi...