【发布时间】:2021-06-26 23:44:31
【问题描述】:
我正在开发一个异步的网络服务。在我的客户端代码中,我使用boto3 session client 来调用我的 Jetty 服务器的 GET API,这是 S3 类似的服务。 GET API 从 S3 获取原始数据并修改请求以便能够将请求转发到烧瓶服务器。然后 Python 烧瓶处理请求(完成数据转换)并调用 Jetty Server 的 POST API。
现在我一直在想如何回复原来的来电者?因为我不确定一个 API 请求是否可以有一个 session-id 来识别原始调用者?
我的 POST API 如何响应客户端?以下是我想要实现的总体概念。我该怎么做?
【问题讨论】:
-
我不明白您为什么会从 GET 请求触发 POST 请求。这本身看起来像糟糕的设计,但我也没有得到那个 POST 请求甚至需要做什么?为什么 Flask Server 会创建自己的请求,而不是响应来自 Jetty Server 的初始请求?
-
@Tom 我需要异步完成这项工作,因为我正在尝试重新创建自己的 S3 对象 lambda 服务。 Flask Server 的 lambda 函数转换数据,然后调用我的 Jetty 服务器的 POST api。这个 POST API 是 writeGetObjectResponse(),然后需要响应来自客户端的原始请求。我正在尝试在我自己的环境中重现 AWS 服务。如果我需要更清楚地说明这一点,请告诉我。
-
HTTP 请求不是异步的。原始 GET 请求必须阻塞,直到您准备好发送响应。你不能推迟它并在以后完成它。它会等着你。
-
@TimRoberts 是的,我想我现在理解了那部分。但是我对如何从 writeGetObjectResponse() 发送对原始 GET 请求的响应感到困惑?是否有一个请求标识符机制,API 将通过它知道在哪里响应?还是我完全看错了?
-
这样想。如果原始客户端请求由您的 Flask 应用程序处理,那么您将在 Python 函数中收到请求。该函数最终必须返回一个字符串。这就是它的人生目的。您必须弄清楚如何构造该字符串。您可以调用创建该字符串所需的任何外部服务。
标签: java python rest jax-rs flask-restful