1

我正在使用 GAE 上的应用程序来接收集群上运行的 PBS pro 生成的电子邮件。该应用程序通过电子邮件解析集群作业的统计信息并生成一个简单的报告。

问题是,当集群上启动大量作业时,应用程序可能会在几秒钟内收到 1000 多封电子邮件。大量实例被启动来处理请求。我可以通过将允许的延迟设置为大约几秒来控制这一点,但这会在为具有报告的应用程序的首页提供服务时产生可见的延迟。

有没有办法为每个单独的 URL 设置可接受的延迟,以便

/_ah/mail/user@myapp.appspotmail.com

可以有高延迟而不会导致更多实例启动,但如果任何其他 URL 导致高延迟,将启动更多实例?

- 安德鲁

4

2 回答 2

3

据我所知,无法根据路由在管理控制台中设置最大延迟。但是,您可以做的是,在您收到电子邮件后,将电子邮件文本提供给任务队列任务。这些可以被限制为非常精细的细节。如果您使用的是 python,则可以使用deferred模块,因此您不必为这些任务队列任务创建单独的处理程序。我没有在 GAE 上使用 java 的经验,所以我不知道是否有类似的 java。

于 2012-12-12T16:48:53.383 回答
0

不,您不能为每个 Url 设置应用程序延迟设置。

缓解问题的一种方法是让邮件处理程序做最少的工作。因此,您应该将所有耗时的操作移至任务队列,而不是在邮件处理程序中进行所有解析和报告生成。这样邮件处理程序将快速返回,允许它一次处理更多请求。

任务队列让您可以控制并行任务执行,因此您可以微调需要多少实例。

于 2012-12-12T19:33:30.750 回答