CGI не работает со встроенным Python 3.1 http.server
Я использую http.server с CGIHTTPRequestHandler на OS X 10.6, и путь кода posix в run_cgi() не работает должным образом. Я звоню по адресу /cgi-bin/test.py из формы отправки.
Большую часть дня я получал сообщение об ошибке "OSError: [Errno 2] Нет такого файла или каталога" в строке 1058 os.execve (), но теперь это "OSError: [Errno 8] Exec format error". Я так сильно изменился, что не знаю причину другой ошибки, но в любом случае do_POST() не работает для меня.
$ ./demon-local.py
Serving HTTP on 0.0.0.0 port 8000
localhost - - [27/Oct/2010 21:24:39] "POST /cgi-bin/test.py HTTP/1.1" 200 -
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/http/server.py", line 1058, in run_cgi
os.execve(scriptfile, args, os.environ)
OSError: [Errno 8] Exec format error
localhost - - [27/Oct/2010 21:24:39] CGI script exit status 0x7f00
Я запустил код в pdb и не могу найти ничего плохого в переменных scriptfile, args и os.environ. Когда я достигаю строки os.execve в отладчике, кажется, что выполнение просто зависает, и мне приходится несколько раз нажимать ctrl-c, чтобы уничтожить все.
Кто-нибудь здесь имел успех, используя встроенный CGIHTTPRequestHandler?
Большое спасибо, Крис
1 ответ
Зачем вам писать CGI-скрипт на Python, а затем использовать веб-сервер Python для вызова CGI!? Поговорите о том, чтобы заставить верблюда прокалывать игольное ушко.
Вместо этого вызывайте методы Python непосредственно из Python. В Python 3.2 должна быть даже эталонная реализация WSGI. Или вы можете посмотреть на бутылочный фреймворк, он поддерживает Python 3.