如何为特定的cron/request禁用Google App Engine请求超时
我正在创建一些需要超过30秒处理时间的例程,GAE总是终止我的例程。
有解决办法吗?
一个选项是任务队列,有10分钟的时间限制。
另一个是没有时间限制的后端。
您可能想要查看任务队列。http://code.google.com/appengine/docs/java/taskqueue/overview-push.html
我使用后端来运行需要更多CPU时间的任务,它工作得很好。虽然它是基于python的,但我相信概念应该是一样的。
。使用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分钟,我已经做了一点代码来用方便的参数重新排队相同的任务,所以我避免使用更昂贵的后端。