转自 : http://www.lpfrx.com/archives/133/
今天无意google时看见,心里突然想说,python做web服务器,用不用这么简单啊,看来是我大惊小怪了.
web1.py
1
2
3
|
#!/usr/bin/python
import
SimpleHTTPServer
SimpleHTTPServer
.
test
(
)
|
web2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/usr/bin/python
import
SimpleHTTPServer
import
SocketServer
import
os
PORT
=
80
WEBDIR
=
"f:/python语言学习"
class
Handler
(
SimpleHTTPServer
.
SimpleHTTPRequestHandler
)
:
def
translate_path
(
self
,
path
)
:
os
.
chdir
(
WEBDIR
)
return
SimpleHTTPServer
.
SimpleHTTPRequestHandler
.
translate_path
(
self
,
path
)
try
:
httpd
=
SocketServer
.
TCPServer
(
(
""
,
PORT
)
,
Handler
)
print
"dir %s serving at port %s"
%
(
repr
(
WEBDIR
)
,
PORT
)
httpd
.
serve_forever
(
)
except
:
pass
|
web3.py , cgi server ,7777端口, 在web3.py执行目录下新建cgi-bin目录 , 在cgi-bin目录写hello.py
web3.py
1
2
3
4
5
|
from
CGIHTTPServer
import
CGIHTTPRequestHandler
from
BaseHTTPServer
import
HTTPServer
server_address
=
(
''
,
7777
)
httpd
=
HTTPServer
(
server_address
,
CGIHTTPRequestHandler
)
httpd
.
serve_forever
(
)
|
hello.py
1
2
3
4
5
6
7
8
|
#!c:/Python24/python.exe
print
"HTTP/1.0 200 OK"
print
"Content-Type: text/html"
print
""
print
"<p>"
print
"Hello World!"
print
"</p>"
|
以下这些是需要安装了 twisted 才能使用的
web4.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
from
twisted
.
web
.
resource
import
Resource
from
twisted
.
web
import
server
from
twisted
.
web
import
static
from
twisted
.
internet
import
reactor
class
ReStructured
(
Resource
)
:
def
__init__
(
self
,
filename
,
*
a
)
:
self
.
rst
=
open
(
filename
)
.
read
(
)
def
render
(
self
,
request
)
:
return
self
.
rst
PORT
=
8888
resource
=
static
.
File
(
'/'
)
resource
.
processors
=
{
'.html'
:
ReStructured
}
resource
.
indexNames
=
[
'index.html'
]
reactor
.
listenTCP
(
PORT
,
server
.
Site
(
resource
)
)
reactor
.
run
(
)
|
web5.py, 这是又是支持cgi的,又是需要twisted模块的,也是需要在cgi-bin目录下执行,上边的hello.py也能用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# -*- coding: utf-8 -*-
from
twisted
.
internet
import
reactor
from
twisted
.
web
import
static
,
server
,
twcgi
from
twisted
.
web
.
resource
import
Resource
class
Collection
(
Resource
)
:
def
render_GET
(
self
,
request
)
:
return
"hello world 你好"
root
=
static
.
File
(
'./'
)
root
.
putChild
(
''
,
Collection
(
)
)
root
.
putChild
(
'img'
,
static
.
File
(
'./img'
)
)
root
.
putChild
(
'cgi-bin'
,
twcgi
.
CGIDirectory
(
'cgi-bin'
)
)
reactor
.
listenTCP
(
80
,
server
.
Site
(
root
)
)
reactor
.
run
(
)
|
当然,想实现复杂功能还是需要自己搞代码的,只不过想惊叹python的模块集成得太多功能了.
python超简单的web服务器。