当我使用 Flask 开发服务器并引发异常时,我得到正确的错误代码和我的自定义错误消息。但这在生产环境中不起作用(我将 lighttpd 与 fcgi 一起使用),我只是在那里得到 500 错误。
这是我的异常的样子:
class InvalidSettings(Exception):
status_code = 400
def __init__(self, message, status_code=None, payload=None):
super(InvalidSettings, self).__init__()
self.message = message
if status_code is not None:
self.status_code = status_code
self.payload = payload
def to_dict(self):
rv = dict(self.payload or ())
rv['message'] = self.message
return rv
这是错误处理程序代码:
@app.errorhandler(InvalidSettings)
def handle_invalid_settings(error):
response = json.dumps(error.to_dict())
response.status_code = error.status_code
return response
更新
我尝试使用自定义错误消息,但出现异常:
TypeError: __init__() got an unexpected keyword argument 'errors'
Api
这是真的, Flask-RESTful的构造函数中没有这样的东西。这很奇怪,因为它是 0.2.1 版本的文档,正如我在 pip 中看到的那样,我的版本是 0.2.12。然而,我无法弄清楚它是否是我真正需要的。