Невозможно запустить сценарии Python CGI, используя CGIHTTPRequestHandler в Python 3.3

Я нуб; пытаясь создать и использовать простой веб-сервер в Python, который выполняет скрипты CGI, написанные на Python. Я использую Windows XP и Python v3.3.0. У меня есть каталог "myserver", который содержит "myserver.py", "sample.html" и каталог "cgi-bin", который в свою очередь содержит "cgi_demo.py"

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

1 ответ

Решение

Извините за беспокойство!

Ну, это моя вина. 2 вещи на заметку:

[1] Окно консоли, которое появилось и исчезло; это происходит только тогда, когда я использую IDLE для запуска сервера. Если скрипт уже запущен в нормальной консоли Windows, то этого не происходит. Мое чувство было НЕПРАВИЛЬНО.

[2] В моем скрипте cgi есть ошибка / ошибка. После печати заголовка HTTP; оператор print, который я написал, был просто "print", а не "print()". Это так неловко! Но даже тогда почему переводчик не уловил эту ошибку?

Другие вопросы по тегам