Google App Engine - 使用任务队列还是延迟作业
1 个回答
11
我不知道你有没有注意到,关于延迟任务的文档最后有这么一段:
你可能在想,什么时候应该使用 ext.deferred,什么时候又该用内置的任务队列 API。以下是我们的建议。
你可能想使用延迟库的情况:
- 你只是轻度使用任务队列。
- 你想对现有代码进行重构,让它在任务队列上运行,但又不想做太多改动。
- 你在写一个一次性的维护任务,比如数据库结构迁移。
- 你的应用有很多不同类型的后台任务,为每个任务写一个单独的处理程序会很麻烦。
- 你的任务需要复杂的参数,这些参数不容易序列化,除非使用 Pickle。
- 你在为其他应用编写一个需要进行后台工作的库。
你可能想使用任务队列 API 的情况:
- 你需要完全控制任务是如何排队和执行的。
- 你需要比延迟库提供的更好的队列管理或监控。
- 你的任务量很大,开销很重要。
- 你在构建更大的抽象,需要直接控制任务。
- 你更喜欢 webhook 模型,而不是 RPC 模型。
当然,如果你的应用有同时适合这两种情况的需求,你可以将任务队列 API 和延迟库一起使用。