Google App Engine有两种方法可以在稍后的某个时间点运行作业Task Queues和Deferred jops
就我所知,它们支持所有相同的功能(例如,可以将延迟作业放在特定任务队列上以便限制执行) - 但延迟作业看起来更容易实现且更灵活。
任何人都知道每种方法的专业人士的意见吗?您是否希望在延期作业上使用任务队列的任何情况?
答案 0 :(得分:11)
我不确定你是否注意到它,但是deferreds的文档最后有这一部分:
您可能想知道何时使用ext.deferred,以及何时使用内置任务队列API。以下是我们的建议。
如果符合以下条件,您可能需要使用延迟库:
- 您只能轻轻使用任务队列。
- 您希望重构现有代码,以便在任务队列上运行,并进行最少的更改。
- 您正在编写一次性维护任务,例如架构迁移。
- 你的应用程序有许多不同类型的后台任务,为每个任务编写一个单独的处理程序会很麻烦。
- 您的任务需要复杂的参数,如果不使用Pickle,则不易序列化。
- 您正在为需要进行后台工作的其他应用编写库。
您可能希望在以下情况下使用任务队列API:
- 您需要完全控制任务的排队和执行方式。
- 您需要比延迟提供更好的队列管理或监控。
- 您的吞吐量很高,而且开销很重要。
- 您正在构建更大的抽象,需要直接控制任务。
- 你比web模型更喜欢webhook模型。
当然,如果您的应用具有适合两个组的要求,则可以并排使用任务队列API和延迟库。