【发布时间】:2012-02-01 00:34:10
【问题描述】:
如何为特定的 cron/请求禁用 Google App Engine 请求超时。
我正在创建一些需要超过 30 秒处理的例程,而 GAE 总是终止我的例程。
有什么解决办法吗?
【问题讨论】:
标签: java google-app-engine servlets timeout
如何为特定的 cron/请求禁用 Google App Engine 请求超时。
我正在创建一些需要超过 30 秒处理的例程,而 GAE 总是终止我的例程。
有什么解决办法吗?
【问题讨论】:
标签: java google-app-engine servlets timeout
一个选项是Task Queues,有 10 分钟的时间限制。
另一个是Backends,没有时间限制。
【讨论】:
【讨论】:
我使用后端来运行需要更多 CPU 时间的任务,并且运行良好。 虽然是基于python的,但相信概念应该是一样的。
A.使用 cron 执行任务 例如:
cron: - description: Start Backend to parse the log url: /_ah/start/ParseLog/ schedule: every day 00:00
B. cron 执行的任务是在前端运行的,所以还是有时间限制的。因此,我将任务转发到后端(名为“worker”)以避免时间限制。
class ParseLogStarter(webapp.RequestHandler): # run on frontend def get(self): self.post() def post(self): date = self.request.get("date") # do nothing but forwarding to backend "worker" taskqueue.add(url="/_ah/ParseLog/", params={"date":date}, target='worker')
C.在后端,接收转发的任务并处理例程作业。
class ParseLogWorker(webapp.RequestHandler): # run on backends def get(self): self.post() def post(self): # do your routines job here
【讨论】:
我同意,您可以使用任务队列,它们的超时时间为 10 分钟,我刚刚在最近的一个项目中使用了任务队列,并且我做了一些代码来使用方便的参数重新排队相同的任务,如果需要超过 10 分钟,所以我避免使用更昂贵的后端。
【讨论】: