Python实现HTTP服务器(五)单进程线程非阻塞实现多任务

本文介绍如何使用Python实现一个非阻塞的单线程HTTP服务器,通过设置套接字为非阻塞状态,利用一个列表管理交互的套接字,当收到数据时进行交互,若数据为空则关闭并移除套接字。

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

承接上文:https://blog.youkuaiyun.com/qq_32426313/article/details/104204473

上篇博客使用了进程、线程、协程实现了多任务的HTTP服务器。本文使用非阻塞单线程进程实现多任务。

1.设置套接字为非阻塞状态

2.建立一个列表用来装交互的套接字

3.遍历列表,如果收到数据则进行交互,如果收到的数据为空,则说明浏览器关闭,关闭套接字,从列表中删除这个套接字

import socket
import time

tcp_server_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_tcp.bind(("", 7899))
tcp_server_tcp.listen(128)
tcp_server_tcp.setblocking(False)  # 设置套接字为非堵塞的方式

client_socket_list = list()

while True:

    # time.sleep(0.5)

    try:
        new_socket, new_addr = tcp_server_tcp.accept()
    except Exception as ret:
        print("---没有新的客户端到来---")
    else:
        print("---只要没有产生异常,那么也就意味着 来了一个新的客户端----")
        new_socket.setblocking(False)  # 设置套接字为非堵塞的方式
        client_socket_list.append(new_socket)
        
    for client_socket in client_socket_list:
        try:
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值