1

我是菜鸟;尝试在 Python 中创建和使用一个简单的网络服务器,该服务器执行用 Python 编写的 CGI 脚本。我正在使用 Windows XP 和 Python v3.3.0。我有一个“myserver”目录,其中包含“myserver.py”,“sample.html”,目录“cgi-bin”又包含“cgi_demo.py”

我的服务器.py

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!!

4

1 回答 1

2

抱歉,添麻烦了!

好吧,这是我的错。2点需要注意:

[1]出现和消失的控制台窗口;它仅在我使用 IDLE 执行服务器时发生。如果脚本已经在普通的 Windows 控制台中运行,则不会发生这种情况。我的感觉是错误的。

[2] 我的 cgi 脚本中有一个错误/错误。打印 HTTP 标头后;我写的打印语句只是“打印”而不是“打印()”。这太尴尬了!但是,即便如此,为什么解释器没有捕捉到这个错误呢?

于 2012-11-29T14:37:11.120 回答