本文整理汇总了Python中falcon.request.Request.log_error方法的典型用法代码示例。如果您正苦于以下问题:Python Request.log_error方法的具体用法?Python Request.log_error怎么用?Python Request.log_error使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类falcon.request.Request
的用法示例。
在下文中一共展示了Request.log_error方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __call__
# 需要导入模块: from falcon.request import Request [as 别名]
# 或者: from falcon.request.Request import log_error [as 别名]
def __call__(self, env, start_response):
"""WSGI "app" method
Makes instances of API callable by any WSGI server. See also PEP 333.
Args:
env: A WSGI environment dictionary
start_response: A WSGI helper method for setting status and headers
on a response.
"""
req = Request(env)
resp = Response()
responder, params, na_responder = self._get_responder(
req.path, req.method)
try:
responder(req, resp, **params)
except HTTPError as ex:
resp.status = ex.status
if ex.headers is not None:
resp.set_headers(ex.headers)
if req.client_accepts('application/json'):
resp.body = ex.json()
except TypeError as ex:
# NOTE(kgriffs): Get the stack trace up here since we can just
# use this convenience function which graps the last raised
# exception context.
stack_trace = traceback.format_exc()
# See if the method doesn't support the given route's params, to
# support assigning multiple routes to the same resource.
try:
argspec = responder.wrapped_argspec
except AttributeError:
argspec = inspect.getargspec(responder)
# First three args should be (self, req, resp)
if argspec.args[0] == 'self':
offset = 3
else:
offset = 2
args_needed = set(argspec.args[offset:])
args_given = set(params.keys())
# Reset the response
resp = Response()
# Does the responder require more or fewer args than given?
if args_needed != args_given:
req.log_error('A responder method could not be found with the '
'correct arguments.')
na_responder(req, resp)
else:
# Error caused by something else
req.log_error('A responder method (on_*) raised TypeError. %s'
% stack_trace)
falcon.responders.internal_server_error(req, resp)
#
# Set status and headers
#
use_body = not helpers.should_ignore_body(resp.status, req.method)
if use_body:
helpers.set_content_length(resp)
body = helpers.get_body(resp)
else:
# Default: return an empty body
body = []
# Set content type if needed
use_content_type = (body or
req.method == 'HEAD' or
resp.status == HTTP_416)
if use_content_type:
media_type = self._media_type
else:
media_type = None
headers = resp._wsgi_headers(media_type)
# Return the response per the WSGI spec
start_response(resp.status, headers)
return body