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

Pet*_*ego 4 java google-app-engine

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

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

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

我已经尝试过的是:

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

我在开发服务器上尝试了所有这些.它应该在生产上试用吗?

Dan*_*man 12

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

  • 通过Google偶然发现此页面的人的附录:将任务队列推送到后端服务器的方法记录在http://code.google.com/appengine/docs/java/taskqueue/overview-push.html#Push_Queues_and_Backends (2认同)