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

时间:2011-02-05 19:51:46

标签: python google-app-engine

Google App Engine有两种方法可以在稍后的某个时间点运行作业Task QueuesDeferred jops

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

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

1 个答案:

答案 0 :(得分:11)

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

  

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

     

如果符合以下条件,您可能需要使用延迟库:

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

您可能希望在以下情况下使用任务队列API:

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

当然,如果您的应用具有适合两个组的要求,则可以并排使用任务队列API和延迟库。