【问题标题】:Time Limit for Task Queue in Google App EngineGoogle App Engine 中任务队列的时间限制
【发布时间】:2011-03-17 15:30:17
【问题描述】:

我在 GAE 中使用任务队列为我的应用程序执行一些后台工作。我知道某项特定任务有 10 分钟的时间限制。我关心的是如何在本地环境中测试这个东西。我尝试了线程睡眠,但它没有像谷歌应用引擎文档中提到的那样抛出任何异常。也就是这个时间限制是用CPU时间还是实际时间来衡量的。

谢谢。

【问题讨论】:

  • 您在机器上 10 分钟可以完成的事情与您在 App Engine 上可以在 10 分钟内完成的事情完全不同。

标签: google-app-engine task-queue


【解决方案1】:

时间以挂钟时间计算。开发服务器不强制执行时间限制,虽然不清楚你为什么要测试它,因为你的测试不太可能像在生产环境中那样执行,所以试着猜测你能在生产环境中完成多少生产服务器上的 10 分钟,看看你在开发服务器上 10 分钟内可以完成多少,将会非常失败。

【讨论】:

  • 您可能希望通过在不同点强制超时失败来测试您的恢复机制。
  • 实际上我想知道如何通过捕获超出时间限制时抛出的异常来使我的应用程序安全失败。你知道我应该在哪里捕捉到那个异常吗?
  • 你抓不住它。你没时间了,所以你无能为力。您或许应该尝试定期检查您还剩多少时间。
  • @Luca 有一个 DeadlineExceededError 可以捕获来处理这种情况。在 Google 示例中,它们经常显示启动另一个任务以继续处理。
【解决方案2】:

对于您的开发服务器,在启动任务时启动计时器。如果您达到 10 分钟挂钟时间,请继续检查您的代码。当你到达时,抛出一个 DeadlineExceededError。最好在调用代码的特定函数的类处理程序中使用 try 和 except 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多