【问题标题】:Google App Engine - Use Task Queues or Deferred JobsGoogle App Engine - 使用任务队列或延迟作业
【发布时间】:2011-02-05 19:51:46
【问题描述】:

Google App Engine 有两种稍后运行作业的方法,Task QueuesDeferred jops

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

有人知道每种方法的优缺点吗?在任何情况下,您都希望在延迟作业上使用任务队列?

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

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

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

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

    • 你只是轻描淡写地使用任务队列。
    • 您希望重构现有代码以在任务队列上运行且更改最少。
    • 您正在编写一次性维护任务,例如架构迁移。
    • 您的应用有许多不同类型的后台任务,为每种类型编写单独的处理程序会很麻烦。
    • 您的任务需要复杂的参数,这些参数在不使用 Pickle 的情况下不容易序列化。
    • 您正在为需要执行后台工作的其他应用编写库。

    如果出现以下情况,您可能希望使用任务队列 API:

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

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

    【讨论】:

    • 可以使用 os.environ 访问 deferred 的元数据;使用管理控制台,您可以监控每个任务,按任务队列排队或延迟。
    • @systempuntoout:感谢您的更正!我主要使用任务队列 API,当涉及到延迟时,我正在阅读文档和模糊的记忆。我会更新我的答案并为错误信息道歉。
    猜你喜欢
    • 2011-05-19
    • 2010-11-04
    • 2017-04-29
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多