web服务器--并发web服务器实现--多进程(进程 线程 协程)

本文介绍了如何使用多任务(进程、线程、协程)来实现并发web服务器。强调了多任务对于处理多个浏览器并发访问的重要性,并指出线程占用资源较少,而协程更是资源效率极高的选择。通过示例,文章探讨了使用gevent实现协程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请求和发送的数据都是有header 和 body 的,但是我们之前看的请求的数据似乎只有header,那是因为以GET 开头的一般没有body 。但是如果以其他开头,一般就有:
在这里插入图片描述
之前我们实现的服务器是为一个用户服务,再为另一个用户服务,那么我们之前学过多任务(进程 线程 协程),这里用多任务来实现服务器:

进程:多进程,主进程和子进程之间资源不是共享的,子进程复制一份主进程,所以 主程序中,要把主进程close ,然后等待子进程执行完 close。程序才会结束。

import socket
import re
import multiprocessing

def service_client(new_client_sock):
    '''为这个客户服务'''

    # 1.接受浏览器发送过来的请求,即http请求,并且从请求中找到所需要的.html文件
    # GET / HTTP/1.1
    # ...
    requst = new_client_sock.recv(1024).decode('utf-8')

    # 转为列表
    requst_lines = requst.splitlines()

    # 寻找文件名  GET /index.html HTTP/1.1
    # 开头有:GET POST PUT DEL 不一定是GET 所以应该不能用GET匹配。
    ret = re.match(r'[^/]+(/[^ ]*)',requst_lines[0])
    if ret:
        file_name = ret.group(1)
        if file_name == '/ ':
            file_name = '/index.html'

    # 2.3 准备body,且这里准备的body不能和之前的字符串一样,直接相加,而是要单独发送。
    # 找到相对应的.html文件
    try:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值