0

在这个项目中,我必须将 Python 用于网站,我正在寻找错误以进入我的浏览器,而不是获得 500 页。任何提示?
另外
,我只是使用普通的 CGI 没什么特别的,我按照这里的解释尝试了这个,但它不起作用

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

2 回答 2

2

这取决于您的 Python Web 框架设置。

例如,Pyramid 框架有各种设置用于在 Web 浏览器中启用回溯并启动交互式调试会话:

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

这完全取决于您的 Python Web 应用程序是如何连接的以及它使用什么架构等等。请在问题中包含完整的上下文信息以获得进一步的帮助。

有关使用 Python 和 WSGI 调试 Web 应用程序的更多信息:

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

如果您不使用任何框架,则需要将所有内容放在主级别 try...except 块中,因为 Python 标准库不提供将异常转换为 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
于 2013-02-22T19:37:38.670 回答
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>''')
于 2013-03-23T10:52:32.547 回答