我想在后端实例上启动一个长时间运行的任务。此后端任务将由前端代码 (servlet) 通过 HTTP 请求启动。这在文档中都有描述,对我有用。
让我烦恼的是前端实例的请求持续时间限制为 30 秒(或者现在是 60 秒?)。在该请求期间,前端将调用后端以启动长时间运行的任务。但是,由于此任务运行时间很长,前端正在等待它完成并将超时。
问题是如何从前端发出HTTP请求来启动长时间运行的后端任务,这样前端就不会超时而后端继续运行?
我已经尝试过的是:
- 在后端启动一个单独的线程。我的 IDE(想法)对此提示,说 App Engine 不允许线程。它们是否允许在后端实例中使用?
- 在后端 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/