App Engine:从前端开始在Backend中启动长时间运行任务的正确方法吗?

时间:2012-01-22 21:07:21

标签: java google-app-engine

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

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

问题是如何从前端发出HTTP请求以启动长时间运行的后端任务,以便前端不会超时并且后端将继续运行?

我已经尝试过的是:

  1. 在后端启动一个单独的线程。我的IDE(Idea)抱怨这一点,说App Engine上不允许使用Thread。它们是否允许在后端实例中使用?
  2. 在后端servlet中,刷新回复并关闭writer() - 没有任何反应。前端没有收到任何东西。
  3. 我在开发服务器上尝试了所有这些。它应该在生产上试用吗?

1 个答案:

答案 0 :(得分:12)

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