python - Google Cloud Functions 上的 Flask `before_request` 上下文函数
问题描述
我正在尝试在 Google Cloud Functions 上使用 Flask 上下文类和函数。这是我正在尝试做的简单代码:
import time
from flask import request, jsonify, g
@app.before_request
def before_request():
g.start = time.time()
@app.after_request
def after_request(response):
if ((response.json) and (response.response) and (200 <= response.status_code < 300)):
response.json['execution_time'] = time.time() - g.start
response.set_data(bytes(json.dumps(response.json), 'utf-8'))
return response
def hello_world(request):
response = jsonify({"status": "success", "message": "Hello World!"})
response.status_code = 200
return response
我试过删除app.
并只使用@before_request
,但这似乎不起作用。知道这是否受支持吗?
另外,是的,我知道我可以execution_time
为每个响应添加一个参数,但是 a) 全局设置它会很好,b)before_request
和after_request
函数还有其他用例。
谢谢!
解决方案
目前无法在 Cloud Functions 中的函数上下文之外进行操作。Cloud Functions 无权访问底层app
.
您可能需要考虑改用Cloud Run,它可以让您定义一个完整的 Flaskapp
并使用@app.before_request
and @app.after_request
.
推荐阅读
- ios - 安装新的 iOS 应用后接收相同的 FCM 令牌
- amazon-web-services - Gitlab runner 使用 IAM ROLE 在 Spot 实例中自动扩展
- javascript - 基于 XHR 的 ajax 无法上传文件
- sas - 将行转换为数据集中的变量
- asp.net-mvc - 如何在对 ASP.NET 核心服务器的 POST 请求正文中使用字符串化枚举?
- java - 为本地环境禁用 @SqsListener
- sql - Postgres & Rust R2D2:如何在没有转义双引号的情况下将 array_to_json 作为文本/字符串?
- containers - 如何在无根 podman 容器中运行 buildah?
- java - Json解码和再次json编码不返回相同的值
- python - 如何打印必须格式化为 n 二进制值宽度的值