【问题标题】:App Engine frontend waiting for backend to finish and return data - what's the right way to do it?App Engine 前端等待后端完成并返回数据 - 正确的方法是什么?
【发布时间】:2016-09-25 08:28:18
【问题描述】:

我在应用引擎中使用内置 angularjs 的前端和内置 python 和 webapp2 的后端。

后端调用第三方 API,获取数据并返回到前端。

来自后端的 API 请求可能需要 30 秒或更长时间。问题是前端在获取数据之前无法真正取得进一步进展。

我尝试使用不同的选项卡同时向后端运行 3 个请求,其中 2 个失败。恐怕这似乎表明该应用一次只允许一个用户。

处理此问题的最佳方法是什么?我的一个想法是:

  • 使用 task queues 在后台运行 API 调用到第 3 方
  • 创建一个新的处理程序,它从队列中读取最后发送的任务,并让前端定期轮询这个任务
  • 数据可用后更新前端

这是正确的方法吗?我确信这是一个在前端+后端的世界中解决的问题,但我只是不知道要搜索什么。

谢谢!

【问题讨论】:

  • 也许可以让前端调用同步,并显示一个动画gif,说请等到api返回数据。
  • @whoopididoo - 我已经这样做了,但似乎我不断收到 DeadlineExceededErrors

标签: python angularjs google-app-engine


【解决方案1】:

来自前端的请求上限为 30 秒;之后他们在服务器端超时。这是 GAE 设计的一部分。来自任务队列的请求有 10 分钟,所以你的想法是可行的。但是,您需要一些标识符用于轮询,而不是仅仅使用“最后发送”来区分并发任务。

【讨论】:

  • 感谢您的建议。是的,我正在考虑使用用户电子邮件和请求类型的唯一标识符来跟踪它。我也在查看端点,它的自动 10 分钟时间段,我想知道这是否是正确的方法。
  • 您可以使用这样的 ID。在对任务进行排队时,我可能会在服务器端生成一个唯一 ID,并将该 ID 包含在返回给前端的响应中。
  • 好主意!谢谢,我想我会用它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多