2012-11-29 102 views
1

我是一个noob;试图在Python中创建和使用一个简单的web服务器,该服务器执行用Python编写的CGI脚本。我正在使用Windows XP和Python v3.3.0。我有一个包含 “myserver.py”, “sample.html” 和目录 “的cgi-bin” 又包含 “cgi_demo.py”无法在Python 3.3中使用CGIHTTPRequestHandler运行python cgi脚本

myserver.py一个 “MYSERVER” 目录

from http.server import HTTPServer 
from http.server import CGIHTTPRequestHandler 

port = 8080 
host = '127.0.0.1' 
server_address = (host,port) 
httpd = HTTPServer(server_address,CGIHTTPRequestHandler) 
print("Starting my web server on port "+str(port)) 
httpd.serve_forever() 

cgi_demo.py

import cgi 
import cgitb; cgitb.enable() 

print("Content-type: text/html") 
print 
print("<html><body>") 
for i in range(0,100): 
    print(i,"<br>") 
print("</body></html>") 

现在目录列表中工作正常 “MYSERVER” 而不是 “cgi-bin目录”;也许这就是它的编码 - 我在这里没有问题。 “sample.html”也检索得很好。但是,“cgi_demo.py”的执行不正确。我在浏览器中看到一个空白页面;并且控制台窗口(也是空白的)出现并消失。此外,在服务器的控制台上,我收到消息

127.0.0.1 - - [29/Nov/2012 12:00:31] "GET /cgi-bin/cgi_demo.py HTTP/1.1" 200 - 
127.0.0.1 - - [29/Nov/2012 12:00:31] command: C:\Python33\python.exe -u "D:\python apps\my web server\cgi-bin\cgi_demo.py" "" 
127.0.0.1 - - [29/Nov/2012 12:00:32] CGI script exited OK 

请告诉我什么是错的!我感觉我的脚本的输出流没有连接到服务器。我究竟做错了什么?不要说我必须扩展CGIHTTPRequestHandler!

回答

2

SORRY的麻烦!

嗯,这是我的错。 2注意事项:

[1]控制台窗口出现并消失;它只发生在我使用IDLE执行服务器时。如果脚本已经在正常的Windows控制台中运行,那么这不会发生。 我的感觉是错误的。

[2]我的CGI脚本有一个错误/错误。打印HTTP标题后;我写的打印声明只是“打印”而不是真正的“打印()”,这太让人尴尬了!但是,即便如此,口译员为什么没有发现这个错误呢?

+0

关于[2]:我认为这是其中一个令人讨厌的python错误。发生在我身上,但与f.close。解释器没有标记这个的原因可能是因为对函数类型对象的引用是一个有效的语句,尽管它没有完成任何事情。 – er4z0r