在API调用期间将记录插入BigQuery或某些RDB



我正在编写一个REST API GET端点,该端点需要向GCP Cloud SQL(MySQL(返回响应并存储记录,但我希望返回不依赖于记录写入的完成。基本上,我的代码看起来像:

def predict():
req = request.json.get("instances")
resp = make_response(req)
write_to_bq(req)
write_to_bq(resp)
return resp

有没有什么简单的方法可以用云SQL客户端库或其他东西做到这一点?

使我们的烧瓶具有满足我要求的功能:

@app.route("predict", method=["GET"]):
def predict():
# do some stuff with the request.json object
return jsonify(response)
@app.after_request
def after_request_func(response):
# do anything you want that relies on context of predict()
@response.call_on_close
def persist():
# this will happen after response is sent,
# so even if this function fails, the predict()
# will still get it's response out
write_to_db()
return response

一件重要的事情是,用after_request标记的方法必须接受一个参数并返回flask.Response类型的东西。此外,我认为如果方法有call_on_close标记,您就不能从main方法的上下文访问,所以您需要在after_request标记的方法内部但在call_on_close方法外部(在上面(定义您想从main方法使用的任何内容。

相关内容

  • 没有找到相关文章

最新更新