用Python脚本定制自己的Web服务器

首先要说明这其实是一个不可能完成的任务,至少不是一片博文就能完成的任务。避免浪费看到标题而满心期待同道的时间。

主要是想以Apache为蓝本,通过Python脚本的方式一步一步实现Apache的核心功能。进而了解Python网络编程以及有关于Web服务性能相关的方方面面。

闲言少叙,直接上代码!

import socket

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind(('',1234))

server.listen(5)

while True:

       client,addr=server.accept()

       data=client.recv(1024)

       client.send("My WebServer")

       client.close()

使用ab命令对这个服务器进行测试:

ab -n500 -c500 http://127.0.0.1:1234/

测试结果如下:

通过打印data可以得到客户端代理提交到WebServer的信息。

GET / HTTP/1.1

User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6

Host: 127.0.0.1:1234

Pragma: no-cache

Accept: */*

我们在这里只关心GET请求的内容,通过解析用户的GET请求后获取指定目录中的文件内容后再返回给客户端。

import socket

import re

DocumentRoot="/root/"

server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

server.bind(('',1235))

server.listen(5)

while True:

       client,addr=server.accept()

       data=client.recv(1024)

       m=re.match('GET /(.*) ',data)#由于ab使用的是http1.0 因此与上例有所区别

       try:#为应对在进行ab测试时候可能的异常

               index=DocumentRoot+m.group(1)

               html=open(index,"r")

               client.send(html.read())

               client.close()

       except:

               client.close()

时间: 2024-10-07 12:05:39

用Python脚本定制自己的Web服务器的相关文章

让IIS7.5 执行Python脚本的配置方法_win服务器

[详细步骤]: 1. 从Python下载windows版本的安装程序(点击进入),我这里由于操作系统是x64的因此选择Python 2.7.11 x64 Installer ~ 2. 安装,这里建议不要安装到系统盘,以免重做系统后再次安装~ 3. IIS7.5->ISAPI和CGI限制->右键添加->ISAPI或CGI路径选择Python文件夹下的python.exe %s %s:描述中填写:python. 4.IIS7.5->处理程序映射->添加脚本映射->请求路径:

Python网络框架——Web服务器

引言:Web服务器是连接用户浏览器与Python服务器端程序的中间节点,在网站建立的过程中起着重要的作用.目前最主流的Web服务器包括Nginx.Apache.lighthttpd.IIS等.Python服务器端程序在Linux平台下使用最广泛的是Nginx. 本文将带您学习Python程序与Web服务器连接的WSGI接口.Nginx的安装和配置方法,以及搭建SSL网站的技术.本文选自<Python高效开发实战--Django.Tornado.Flask.Twisted>一书. 实战演练1:W

Web服务器和应用服务器

WEB服务器 求助编辑百科名片    WEB服务器 WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务.正是因为有了WWW工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长. 目录 定义 什么是WEB服务器 词义辨析 大型WEB服务器 小型WEB服务器 发展趋势 Windows Server 2003安

Linux Apache Web 服务器终极教程_unix linux

APACHE系统介绍  根据著名的WWW服务器调查公司所作的调查世界上百分之五十以上的WWW服务器都在使用Apache是世界排名第一的WEB服务器.Apache的诞生极富有戏剧性.当NCSA WWW服务器项目停顿后那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序他们也很快认识到成立管理这些补丁程序的论坛是必要的.就这样诞生了Apache Group后来这个团体在NCSA的基础上创建了Apache.  Apache的主要特征是  . 可以运行上所有计算机平台  . 支持最新的

Servlet学习之web服务器Tomcat 详解

  Web服务器是什么 Web服务器是指驻留于因特网上某种类型计算机的程序.当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型).服务器使用HTTP(超文本传输协议)进行信息交流,这就是人们常把它们称为HTTPD服务器的原因. Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序. Web服务器可以解析HTTP协议.当Web服务器接收到一个HTTP请求,会返回一个HTT

用python脚本监控网站服务器的状态

通过检测web的一个测试页来获取http状态码判断web server的状态,源脚本来自互联网,在此做小小的注释,供喜欢python的童鞋学习研究. #!/usr/bin/env python #script name check_web_stat.py import socket #tcp建立socket连接用到 import re #正则表达式模块 import sys def check_webserver(address, port, resource): #建立http请求串 if n

Python 搭建Web站点之Web服务器与Web框架_python

之前用 Django 做过一个小的站点,感觉Django太过笨重,于是就准备换一个比较轻量级的 Web 框架来玩玩.Web.py 作者已经挂掉,项目好久没有更新,所以不准备用它.而 Flask 也是一个成熟的轻量级 Web 框架,在 github 上有众多的 Star 和 Fork,文档和扩展也很丰富,值得学习. 学习一个框架最好的方式就是用框架做一个项目,在实战中理解掌握框架.这里我用 Flask 框架,使用 Mysql 数据库做了一个 论坛系统 .麻雀虽小,五脏俱全,论坛效果图如下: 论坛系

在IIS服务器上以CGI方式运行Python脚本的教程_python

由于接触到Python Web开发,正好把最简单的CGI方式研究了一下,话说在Windows下配置Python的Web开发还真的蛮麻烦的,Linux下配置倒挺容易,正好微软有技术文章<Using Python Scripts with IIS>介绍了这些内容,此文介绍了两种方法,一是使用ASP引擎来运行Python脚本,这个可能需要用到ActivePython,当然ASP技术已经过时了,我今天就简单介绍下CGI模块运行方式. 编写简单的支持CGI的Python脚本(本文介绍3.2版本的Pyth

Python脚本实现Web漏洞扫描工具_python

这是去年毕设做的一个Web漏洞扫描小工具,主要针对简单的SQL注入漏洞.SQL盲注和XSS漏洞,代码是看过github外国大神(听说是SMAP的编写者之一)的两个小工具源码,根据里面的思路自己写的.以下是使用说明和源代码. 一.使用说明: 1.运行环境: Linux命令行界面+Python2.7 2.程序源码: Vim scanner//建立一个名为scanner的文件 Chmod a+xscanner//修改文件权限为可执行的 3.运行程序: Python scanner//运行文件 若没有携