gpt4 book ai didi

python - 如何从 flask 端点返回纯文本?普罗米修斯需要

转载 作者:行者123 更新时间:2023-12-03 19:44:26 27 4
gpt4 key购买 nike

我需要设置一个 /metrics 端点,以便 Prometheus 可以使用有关端点的统计信息。我该怎么做?

我的 Flask 应用程序中有这个:

@app.route('/metrics')
def metrics():
def generateMetrics():
metrics = ""
... some string builder logic
return metrics

response = make_response(generateMetrics(), 200)
response.mimetype = "text/plain"
return response

这是最好的方法吗?返回一个字符串(这里只返回 metrics)和返回纯文本有什么区别?为什么我需要 mimetype?

最佳答案

这是最好的方法吗?

有几种方法可以设置 MIME 类型,更好地解释和讨论 in this StackOverflow question 。你的方式工作正常并完成工作。

返回字符串和返回纯文本有什么区别?

如果你返回一个字符串 Flask 会自动 handle some of the Response logic for you 。这意味着使用一些默认值。如果您设置了两个不同的端点,您将看到不同之处在于您的代码返回以下 header :

Content-Type:"text/plain; charset=utf-8"

虽然只返回一个字符串(和默认 MIME 类型)将返回以下 header :
Content-Type:"text/html; charset=utf-8"

为什么我需要 mimetype?

您可能会说它在技术上更正确,因为您的响应只是纯文本,而不是 HTML。但是,需要它的一个更有说服力的原因是您正在使用的第三方系统(Prometheus)依赖或关心“Content-Type” header 的内容。如果他们这样做,那么你必须设置它让他们接受它。

示例代码

对于 Content-Type header 演示,我使用了以下示例 Python 代码:
from flask import Flask, make_response
app = Flask(__name__)


def generateMetrics():
return "hello world"


@app.route('/metrics')
def metrics():
response = make_response(generateMetrics(), 200)
response.mimetype = "text/plain"
return response


@app.route('/metrics2')
def metrics2():
return generateMetrics()

然后我使用 Postman 查看返回的正文和标题。

关于python - 如何从 flask 端点返回纯文本?普罗米修斯需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57296472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com