Как получить трассировку стека сервера для приложения пастера/официантки на стороне клиента

Я запускаю приложение пирамиды python и делаю ему спокойные звонки. Это приложение wsgi, использующее официантку в качестве http-сервера. В настоящее время, когда я делаю неудачный http-запрос, я получаю сообщения вроде:

Internal Server Error
The server encountered an unexpected internal server error

Как мне настроить официантку или пастер, чтобы получать ошибки, которые показывают трассировку стека, например:

Traceback (most recent call last):
  File "/.../pyramid/eggs/waitress-0.8.8-py2.7.egg/waitress/channel.py", line 337, in service
    task.service()
  File "/.../pyramid/eggs/waitress-0.8.8-py2.7.egg/waitress/task.py", line 173, in service
    self.execute()
  ...
  File "/.../pyramid/eggs/pyramid-1.4.5-py2.7.egg/pyramid/config/views.py", line 469, in _class_requestonly_view
    response = getattr(inst, attr)()
  File "/.../pyramid/dustin/views.py", line 139, in delete
    raise Exception('DELETE op failed; oid %s not found' % deleteItem)
Exception: DELETE op failed; oid 00x not found

Моя конфигурация пастера:

[app:main]
use = egg:myegg

pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.debug_templates = true
pyramid.default_locale_name = es

couchdb.uri = http://couchdb-host:5984/
couchdb.db = myegg

[server:main]
use = egg:waitress#main
host = 0.0.0.0
port = 6543

# Begin logging configuration

[loggers]
keys = root

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[handler_console]
class = StreamHandler
args = [sys.stdout]
level = DEBUG
formatter = generic

[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s

# End logging configuration

person RoyM    schedule 11.05.2014    source источник


Ответы (1)


Не могли бы вы использовать представление исключений, чтобы перехватывать любые исключения и возвращать трассировка стека в ответе? Я использовал что-то подобное, чтобы поймать все мои исключения Pyramid, зарегистрировать их, но затем отобразить пользователю «дружественный» рендеринг страницы ошибок.

person Peter Tirrell    schedule 12.05.2014
comment
Спасибо, Питер. Мне было интересно, есть ли способ сказать промежуточному программному обеспечению передать трассировку стека. Быстрая проверка говорит мне, что это официантка, которая в настоящее время ест исключение. - person RoyM; 12.05.2014