4

我在 Google App Engine 中设置了一个非常基本的 Flask 应用程序:

from flask import Flask
app = Flask(__name__)

@app.route("/<id>")
def hello(id):
    print("Got this id: {}".format(id))
    return "Hello World: {}".format(id)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=8080, debug=True)

我通过在终端中运行它来启用日志记录:gcloud beta tasks queues update [QUEUE_ID] --log-sampling-ratio=1.0

我通过向我的 Flask 端点添加 POST 请求来故意触发错误。我在队列中看到这个任务重试了很多次,但是当我点击日志时,我看到了这个(任务名称和队列名称故意为这个屏幕截图修改): 在此处输入图像描述

我期待看到我从中得到的错误,gcloud app logs read即: 2019-11-18 16:27:59 default[20191118t002408] "POST /example_task_handler" 405

我究竟做错了什么?

更新:我确实在 Google App Engine 日志中看到了我正在寻找的日志,但是当我单击单个失败的 POST 请求任务的日志时,我没有看到任何内容。

4

2 回答 2

2
  1. 您是否将队列的名称(“my-queue-name”)分入 for [QUEUE_ID] in 中gcloud beta tasks queues update [QUEUE_ID] --log-sampling-ratio=1.0
  2. 在任务控制台中,您是否看到有人尝试过? 在此处输入图像描述
  3. 您是否尝试加载较旧或较新的日志?
  4. 您是否正在为您的任务使用 App Engine 目标?

另一种查找日志的方法是使用Cloud Tasks QueueStackdriver 中的选择器。 在此处输入图像描述

于 2019-11-18T17:45:25.883 回答
2

事实证明,这个问题是双重的。

  1. 我需要使用 pythonlogging库,所以我切换到logging.info('Got this id: {}'.format(id))
  2. python 的默认日志记录是警告和更高,所以我需要指定它应该打印所有内容,我这样做了:
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)

(这是有效的,因为 DEBUG 是最低的日志记录级别)。

于 2019-11-20T04:22:35.250 回答