CGI不使用内置的Python 3.1 http.server

时间:2010-10-28 01:53:23

标签: http python-3.x cgihttprequesthandler

我在OS X 10.6上使用带有CGIHTTPRequestHandler的http.server,并且run_cgi()中的posix代码路径似乎无法正常工作。我正在从表单提交中调用位于/cgi-bin/test.py的位置。

在今天下午的大部分时间里,我在os.execve()第1058行收到错误'OSError:[Errno 2]没有这样的文件或目录',但现在它们是'OSError:[Errno 8] Exec格式错误'。我已经改变了很多,我不确定导致不同错误的原因,但无论如何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 个答案:

答案 0 :(得分:-2)

为什么要用Python编写CGI脚本然后使用Python Web服务器进行CGI调用!?谈论强迫骆驼穿过针眼。

直接从Python调用Python方法。使用Python 3.2,甚至应该有一个参考WSGI实现。或者您可以查看瓶子框架,它支持Python 3。