Heroku 调试Flask应用程序-如何找出导致400错误请求的原因?

Heroku 调试Flask应用程序-如何找出导致400错误请求的原因?,heroku,flask,gunicorn,foreman,bad-request,Heroku,Flask,Gunicorn,Foreman,Bad Request,我目前正在开发我的第一个Heroku python flask web应用程序,我正在与gunicorn和foreman一起进行本地测试。当我尝试使用url参数中的json编码进行GET请求时,我不断收到400个错误的请求响应。然而,我不知道出了什么问题。服务器日志不打印任何内容。不会记录任何错误,也不会有任何关于已收到请求的消息 我能做些什么来获得更多关于哪里出了问题的信息?我是否需要配置其中一个工具来更详细地记录错误?任何帮助都将不胜感激。谢谢 (app.debug=True顺便问一下)你在

我目前正在开发我的第一个Heroku python flask web应用程序,我正在与gunicorn和foreman一起进行本地测试。当我尝试使用url参数中的json编码进行GET请求时,我不断收到400个错误的请求响应。然而,我不知道出了什么问题。服务器日志不打印任何内容。不会记录任何错误,也不会有任何关于已收到请求的消息

我能做些什么来获得更多关于哪里出了问题的信息?我是否需要配置其中一个工具来更详细地记录错误?任何帮助都将不胜感激。谢谢


app.debug=True
顺便问一下)你在用蓝图吗?根据我的经验,蓝图可以防止任何输出显示在控制台中。下面是一个简单的日志功能,我用来解决这个问题:

import logging
log = logging.getLogger(__name__)
logging.basicConfig(format="[%(asctime)s]  %(levelname)s:%(message)s")
log.setLevel(logging.DEBUG)

def logging_fun(method, remote_addr):
    log.info('HTTP %s request from %s' % (method, remote_addr))

@blueprint.route('/servers', methods=['GET'])
def list_servers():
    """Gives a list of all registered servers."""
    logging_fun(request.method, request.remote_addr)

如果需要查看URL参数是否存在,您也可以让它迭代并打印
request.args

我不确定这是否是导致问题的原因,但我意识到作为URL参数传递的JSON相当长(在URL编码之前大约8000个字符)。另一个问题是,典型的限制大约是2000个字符。现在,我已经通过使用POST请求解决了我的问题,但如果有人有任何提示,我仍然希望知道如何从web应用程序中获取更多详细的调试信息。

谢谢您的建议。然而,我没有使用蓝图。另外值得注意的是,在您的示例中,绑定到我的url的函数,
list\u servers
,在我的web应用程序中似乎从未被调用过。