返回顶部
首页 > 资讯 > 服务器 >Python多任务版静态Web服务器如何实现
  • 406
分享到

Python多任务版静态Web服务器如何实现

2023-07-02 10:07:00 406人浏览 八月长安
摘要

这篇“python多任务版静态WEB服务器如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python多任务版静态We

这篇“python多任务版静态WEB服务器如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python多任务版静态Web服务器如何实现”文章吧。

    概述

    使用多线程,让web服务器可以同时处理多个用户的访问。当客户端和服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线程阻塞。把创建的子线程设置成为守护主线程,防止主线程无法退出。

    实现步骤

    1.导入threading模块

    import threading

    2.设置端口号复用, 程序退出端口立即释放

    tcp_server_Socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

    3.当客户端和服务器建立连接程,创建子线程

    设置target的名称,并且通过元组的方式传入new_socket参数

     sub_thread = threading.Thread(target=handle_client_request, args=(new_socket,))

    4.设置守护主进程

    sub_thread.setDaemon(True)

    5.启动子线程

    sub_thread.start()

    代码实现

    import socketimport threading# 处理客户端的请求def handle_client_request(new_socket):    # 代码执行到此,说明连接建立成功    recv_client_data = new_socket.recv(4096)    if len(recv_client_data) == 0:        print("关闭浏览器了")        new_socket.close()        return    # 对二进制数据进行解码    recv_client_content = recv_client_data.decode("utf-8")    print(recv_client_content)    # 根据指定字符串进行分割, 最大分割次数指定2    request_list = recv_client_content.split(" ", maxsplit=2)    # 获取请求资源路径    request_path = request_list[1]    print(request_path)    # 判断请求的是否是根目录,如果条件成立,指定首页数据返回    if request_path == "/":        request_path = "/index.html"    try:        # 动态打开指定文件        with open("static" + request_path, "rb") as file:            # 读取文件数据            file_data = file.read()    except Exception as e:        # 请求资源不存在,返回404数据        # 响应行        response_line = "Http/1.1 404 Not Found\r\n"        # 响应头        response_header = "Server: PWS1.0\r\n"        with open("static/error.html", "rb") as file:            file_data = file.read()        # 响应体        response_body = file_data        # 拼接响应报文        response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body        # 发送数据        new_socket.send(response_data)    else:        # 响应行        response_line = "HTTP/1.1 200 OK\r\n"        # 响应头        response_header = "Server: PWS1.0\r\n"        # 响应体        response_body = file_data        # 拼接响应报文        response_data = (response_line + response_header + "\r\n").encode("utf-8") + response_body        # 发送数据        new_socket.send(response_data)    finally:        # 关闭服务与客户端的套接字        new_socket.close()# 程序入口函数def main():    # 创建tcp服务端套接字    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    # 设置端口号复用, 程序退出端口立即释放    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)    # 绑定端口号    tcp_server_socket.bind(("", 9000))    # 设置监听    tcp_server_socket.listen(128)    while True:        # 等待接受客户端的连接请求        new_socket, ip_port = tcp_server_socket.accept()        print(ip_port)        # 当客户端和服务器建立连接程,创建子线程        sub_thread = threading.Thread(target=handle_client_request, args=(new_socket,))        # 设置守护主线程        sub_thread.setDaemon(True)        # 启动子线程执行对应的任务        sub_thread.start()if __name__ == '__main__':    main()

    以上就是关于“Python多任务版静态Web服务器如何实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网服务器频道。

    --结束END--

    本文标题: Python多任务版静态Web服务器如何实现

    本文链接: https://lsjlt.com/news/341330.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Python多任务版静态Web服务器如何实现
      这篇“Python多任务版静态Web服务器如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python多任务版静态We...
      99+
      2023-07-02
    • Python多任务版静态Web服务器实现示例
      目录概述实现步骤1.导入threading模块2.设置端口号复用, 程序退出端口立即释放3.当客户端和服务器建立连接程,创建子线程4.设置守护主进程5.启动子线程代码实现概述 使用多...
      99+
      2024-04-02
    • python静态web服务器如何实现
      今天小编给大家分享一下python静态web服务器如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。编写TCP服务器程序...
      99+
      2023-07-04
    • Python本地搭建静态Web服务器的实现
      目录静态Web服务器-返回固定页面数据1. 开发自己的静态Web服务器2. 静态Web服务器-返回固定页面数据的示例代码3. 小结静态Web服务器-返回指定页面数据1. 静态Web服...
      99+
      2023-02-01
      Python搭建静态Web服务器 Python 静态Web服务器
    • python静态web服务器实现方法及代码详解
      1、编写TCP服务器程序。 2、获取浏览器发送的http请求消息数据。 3、读取固定的页面数据,将页面数据组装成HTTP响应消息数据并发送给浏览器。 4、HTTP响应报文数据发送完成...
      99+
      2022-11-21
      python 静态 web服务器
    • Python实现多任务版的udp聊天器
      本文实例为大家分享了Python实现多任务版的udp聊天器,供大家参考,具体内容如下 一、案例示例 二、案例说明 编写一个有2个线程的程序。 2、线程1用来接收数据然后显示。 3、线程2用来检测键盘数据然后通过ud...
      99+
      2022-06-02
      python udp 聊天器
    • Python面向对象如何实现静态Web服务器处理客户端请求
      这篇文章主要讲解了“Python面向对象如何实现静态Web服务器处理客户端请求”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python面向对象如何实现静态Web服务器处理客户端请求”吧!概...
      99+
      2023-07-02
    • 如何使用Node.js搭建一个静态Web服务器
      这篇文章主要介绍了如何使用Node.js搭建一个静态Web服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Node.js搭建一个静态Web服务器文章都会有所收获,下...
      99+
      2024-04-02
    • 如何使用Python实现一个简易版Web服务器
      今天小编给大家分享一下如何使用Python实现一个简易版Web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、简介我...
      99+
      2023-07-05
    • 怎么用Python实现多任务版的udp聊天器
      本篇内容主要讲解“怎么用Python实现多任务版的udp聊天器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python实现多任务版的udp聊天器”吧!一、案例示例二、案例说明编写一个有2...
      99+
      2023-06-20
    • Python如何实现多线程处理任务
      小编给大家分享一下Python如何实现多线程处理任务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!读取Excel数据 —> 发送到行政服务接口安全起见线上操作放在了晚上进行。运行时发现每条数据导入消耗1s多,晚上十点...
      99+
      2023-06-25
    • 怎么使用Python实现多任务版的udp聊天器
      这篇“怎么使用Python实现多任务版的udp聊天器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Python实现多...
      99+
      2023-06-28
    • 如何使用Node.js实现一个静态资源服务器
      今天就跟大家聊聊有关如何使用Node.js实现一个静态资源服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目涉及...
      99+
      2024-04-02
    • Node.js静态文件服务器改进版
      首先还是先感谢github,感谢github上提供此段源码的作者。跟昨晚的来比今天的静态文件服务器有点点复杂些,可以学到很多新的东西。 仔细会发现这次的代码多了一个fs.stat函数和ReadStream...
      99+
      2022-06-04
      静态 改进版 文件服务器
    • SpringBoot动态定时任务实现完整版
      目录 执行定时任务的线程池配置类ScheduledFuture的包装类Runnable接口实现类定时任务注册类定时任务示例类数据库表设计实体类定时任务预热工具类定时任务的:...
      99+
      2023-02-23
      springboot动态定时任务 springboot 定时任务
    • Nodejs实现的一个静态服务器实例
      参考cnodejs.org上面的静态服务器例子,写了下面的一个nodejs静态服务器例子,里面包含cache,压缩,贴代码如下: var port=3333; var http = require(...
      99+
      2022-06-04
      静态 实例 服务器
    • SpringBoot动态定时任务如何实现
      这篇文章主要介绍了SpringBoot动态定时任务如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot动态定时任务如何实现文章都会有所收获,下面我们一起来看看吧。 执行定时任务的...
      99+
      2023-07-05
    • discuz x2 多服务器伪静态规则
      Apache Web Server(独立主机用户) 复制代码代码如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING...
      99+
      2022-06-12
      伪静态
    • python—多任务版udp聊天机器人
      将多任务(多线程)引入到udp聊天机器人,可以实现同时发送消息和接收消息   1 import socket 2 import threading 3 4 5 def udp_send(udp_socket,ip,port...
      99+
      2023-01-30
      机器人 python udp
    • Python静态Web服务器面向对象处理客户端请求
      目录概述实现步骤1.定义web服务器类初始化类处理客户端请求启动web服务器进行工作代码实现概述 把Web服务器抽象成一个类,方法初始化,在初始化中建立套接字对线。提供一个开启Web...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作