2013-02-22 44 views
0

在此项目中,我必须使用Python作为网站,我正在寻找在浏览器中出现的错误,而不是获取500页。任何提示?
加成我只是用普通的CGI没有什么花哨 我想这是解释here,但它不工作如何以类似于PHP的方式显示Python Web应用程序异常

#!/usr/bin/env python 
print "Content-Type: text/plain" 
print 
import sys 
sys.stderr = sys.stdout 
f = open('non-existent-file.txt', 'r') 
+4

您使用的是Web框架吗?如果是这样,哪个? – tom 2013-02-22 19:32:28

+2

同样,你在使用什么服务器? – 2013-02-22 19:33:52

+0

我使用的是Apache2,没有框架 – 2013-02-22 22:00:33

回答

0

我最终创建了一个读取error.log中的错误的脚本。 因此,您不必在同一个标​​签中获取错误,而是为他们提供另一个标签。但是,不要忘记删除脚本,避免提供有关系统的信息。

#! /opt/python3/bin/python3 
#Error Log Viewer 

import subprocess 

p = subprocess.Popen('cat /var/log/apache2/error.log | tail -5', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 

print ('Content-type: text/html\n\n') 
print (''' 
<!DOCTYPE html > 
<html> <head></head> <body>''') 
for line in p.stdout.readlines(): 
    print (line,'<br>') 
print('''</html></body>''') 
2

这取决于你的Python的Web框架设置

例如,金字塔框架对实现追溯的网络浏览器启动交互式调试会话的各种设置:

http://docs.pylonsproject.org/projects/pyramid/en/1.3-branch/narr/introduction.html#debugging-settings

这一切都取决于你的Python web应用程序是如何连接起来,什么样的架构它用途等。请在问题中包含完整的上下文信息以获取进一步帮助。

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques

如果你不使用你需要把一切主级内部try ... except块为Python标准库的框架:有关调试Web应用程序使用Python和WSGI

更多信息不提供将异常转换为HTML的工具。

import traceback 

    try: 
     ... 
    except Exception as e: 
     # Set content type as text/plain (don't know how) 
     traceback.print_exc(e) # Print out exception as plain text 
+0

apache2和python3,没有框架,也没有WSGI,但它的移动到我的计划 – 2013-02-22 22:02:33

+0

如果你是纯粹的Python没有框架,这样的功能没有提供。您可以编写主要级别的HTTP请求处理函数,该函数缓存异常并将其转换为HTML页面。有关Python异常处理工具的更多信息:http://docs.python.org/2/library/traceback.html – 2013-02-25 13:07:45

+0

更新了答案 – 2013-02-25 13:10:07

相关问题