java - 应用引擎 : correct way to start long running task in Backend from the front end?

标签 java google-app-engine

我想在后端实例上启动一个长时间运行的任务。此后端任务将由前端代码 (servlet) 通过 HTTP 请求启动。这在文档中都有描述,对我有用。

让我烦恼的是前端实例的请求持续时间限制为 30 秒(或者现在是 60 秒?)。在该请求期间,前端将调用后端以启动长时间运行的任务。但是,由于此任务运行时间很长,前端正在等待它完成并将超时。

问题是如何从前端发出HTTP请求来启动长时间运行的后端任务,这样前端就不会超时而后端继续运行?

我已经尝试过的是:

  1. 在后端启动一个单独的线程。我的 IDE(想法)对此提示,说 App Engine 不允许线程。它们是否允许在后端实例中使用?
  2. 在后端 servlet 中,刷新回复并关闭 writer() - 没有任何反应。前端不接收任何东西。

我在开发服务器上尝试了所有这些。是否应该在生产中试用?

最佳答案

在前端或后端 AppEngine 上执行长时间运行请求的方法是使用 task queues .任务有 10 分钟超时而不是 60 秒,但如果您需要更多时间,您可以通过给它一个目标名称在后端实例上运行它。

关于java - 应用引擎 : correct way to start long running task in Backend from the front end?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964703/

相关文章:

google-app-engine - 为什么我的 API 没有在部署时显示?

java - 从已排序数组的数组中获取 N 个已排序项

java - tomcat重启后基于spring security java的配置

java - 静态 block - 它们何时执行

google-app-engine - App Engine 裁剪到特定的宽度和高度

javascript - 如何向 Chrome 扩展程序发送数据?

java - 将 cucumber 功能文件中的数字作为字符串包含在内?

java - 如何实现仅使用用户态内存进行传输的 NIO channel ?

java - Spring UserDetailsS​​ervice 不是 google-apps-engine 中的可序列化 session 属性

google-app-engine - 将 ID 添加到数据存储实体的最佳做法?