6

我正在使用由 Waitress 提供服务的 Python 和 Flask 来托管POSTAPI。我从发布数据并获取字符串响应的 C# 程序调用 API。至少 95% 的时间,它工作正常,但有时 C# 程序会报错: (500) Internal Server Error.

没有进一步描述错误或其发生原因。唯一的线索是它通常发生在集群中——当错误发生一次时,它可能会连续发生多次。无需任何干预,它就会恢复正常运行。

由于错误非常罕见,因此很难排除故障。关于如何调试或获取更多信息的任何想法?我可以从 C# 端或 Flask/Waitress 端进行错误处理吗?

4

2 回答 2

3

Flask 支持注册错误处理程序。定义错误处理程序可以自定义服务器错误日志以及向客户端返回更有意义的信息。

例子

import logging
import traceback

from flask import Flask, jsonify
from werkzeug.exceptions import HTTPException


app = Flask(__name__)
logger = logging.getLogger()

@app.errorhandler(HTTPException)
def handle_http_exception(error):
    error_dict = {
        'code': error.code,
        'description': error.description,
        'stack_trace': traceback.format_exc() 
    }
    log_msg = f"HTTPException {error_dict.code}, Description: {error_dict.description}, Stack trace: {error_dict.stack_trace}"
    logger.log(msg=log_msg)
    response = jsonify(error_dict)
    response.status_code = error.code
    return response
于 2019-09-22T15:47:37.640 回答
0

你的烧瓶应用程序应该在发生异常时记录它。除了梳理您的日志(应该集中存储在某个地方)之外,您还可以考虑使用 Sentry.io 之类的东西,它很容易使用 Flask 应用程序进行设置。

于 2019-09-22T14:28:21.290 回答