首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python CGI脚本过早结束错误取决于脚本参数

Python CGI脚本过早结束错误取决于脚本参数
EN

Stack Overflow用户
提问于 2010-04-19 22:35:22
回答 1查看 4.1K关注 0票数 2

我有一个python脚本,它应该解析一个文件,并产生一些输出到磁盘,以及返回一个网页链接到输出的文件。当运行一个从超文本标记语言表单发布的文件时,我得不到任何超文本标记语言输出,只得到一个500错误页面,并且error_log包含以下行:

Mon 19 15:03:23 2010 client xxx.xxx.121.79提早结束脚本头: uploadcml.py,referer:http://xxx.ch.cam.ac.uk:9000/

但是,脚本应该保存的文件确实保存在磁盘上。

如果我不带任何参数运行它,脚本将返回正确的HTML,表明没有解析任何文件。

我在网上找到的所有关于脚本头过早结束的信息都暗示,这要么是因为缺少头,要么是因为对python脚本缺乏权限,但这两种情况都不适用于我。

脚本的第一行是:

代码语言:javascript
复制
#!/home/nwe23/bin/bin/python
import cgitb; cgitb.enable()
import cgi
import pybel,openbabel
import random
print "Content-Type: text/html"
print

因此,在运行时,我看不到它不可能不输出头,并且在没有要解析的文件的情况下运行时,它确实输出头,但当给定一个文件时,它会产生错误(但仍然会解析文件并将输出保存到磁盘!)。

有人知道这是如何发生的吗?可以做些什么来修复它?

我尝试在文件中的不同位置添加缩进错误的乱码(如foobar),这会导致在error_log中添加缩进错误,即使它是脚本中的最后一行。然而,过早的脚本标头错误仍然存在。这是否意味着脚本一直在执行?

编辑我现在设法让它工作了,似乎通过SWIG对外部C++库的一个调用失败了,但没有产生有用的错误消息。我已经修复了这个问题,现在脚本工作正常。

令人惊讶的是,当一些远程库调用失败时,error_log中唯一的错误是关于脚本头的。我想这就是调用非python代码的危险所在-- /EDIT

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-19 23:55:30

当C库出现分段错误或以其他方式退出时,标准输出缓冲区可能不会被刷新。使用Python解释器的-u选项或手动刷新应该可以解决“脚本头过早结束”问题,但对实际问题没有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2668256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档