Google App Engine - 使用任务队列或延迟作业

Rya*_*yan 5 python google-app-engine

Google App Engine有两种方法可以在稍后的某个时间运行作业:任务队列延迟的jops

据我所知,它们支持所有相同的功能(例如,延迟作业可以放在特定的任务队列上,因此可以限制执行) - 但是延期作业看起来更容易实现,更灵活.

有人知道每种方法的专业人士的意见吗?您是否希望在延期作业上使用任务队列的任何情况?

sha*_*ang 11

我不确定你是否注意到它,但是deferreds的文档最后有这一部分:

您可能想知道何时使用ext.deferred,以及何时使用内置任务队列API.以下是我们的建议.

如果出现以下情况,您可能希望使用延迟库:

  • 您只需轻轻使用任务队列.
  • 您希望重构现有代码以在任务队列上运行,并进行最少的更改.
  • 您正在编写一次性维护任务,例如架构迁移.
  • 您的应用程序有许多不同类型的后台任务,为每个任务编写一个单独的处理程序将是繁重的.
  • 您的任务需要复杂的参数,如果不使用Pickle,则不容易序列化.
  • 您正在为需要执行后台工作的其他应用程序编写库.

如果出现以下情况,您可能需要使用Task Queue API:

  • 您需要完全控制任务的排队和执行方式.
  • 您需要比延迟提供更好的队列管理或监控.
  • 您具有高吞吐量,并且开销很重要.
  • 您正在构建更大的抽象,需要直接控制任务.
  • 您比web模型更喜欢webhook模型.

当然,如果您的应用程序具有适合两个组的要求,您可以并排使用Task Queue API和延迟库.