【问题标题】:app engine (gae), python, ndb, deferred library or task chain, cron job or all?应用引擎 (gae)、python、ndb、延迟库或任务链、cron 作业还是全部?
【发布时间】:2015-10-28 14:29:47
【问题描述】:

我对任务链、拉队列或推送队列、cron 作业、延迟库等不是很熟悉。但我知道我需要将其中之一用于手头的任务。我不确定最好的方法是什么。

我有一个 ndb.Model 需要更新的某个属性。

我将有成千上万个需要更新的 ndb.Model 实例/实体,实际上每个实例都具有相同的属性。

此属性不需要经常更新,因为最终用户不会访问它。

我研究过的解决方案:

  • Map reduce 似乎有点过头了,我想我读过一些关于它需要 cvs 文件的内容,这让我害怕。

  • 似乎任务链与 cron 作业相结合可以解决这个问题,但是.. 我不知道这是否可能。我都是新手,希望得到确认。

我已经阅读了有关延迟库的信息,这是最好的选择吗?

【问题讨论】:

    标签: python google-app-engine cron task deferred


    【解决方案1】:

    cron 作业本身实际上是一个计划任务,所以是的,cron + 任务队列是可能的 :)

    嗯,阅读文档以获得更好的想法总是好的:

    this article 中有一个指导说明,可能也会有所帮助:

    何时使用 ext.deferred

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

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

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

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

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

    当然,您可以同时使用 Task Queue API 和 deferred 并排的库,如果您的应用程序具有同时满足两者的要求 组。

    Google App Engine Pipeline API(实际上是 mapreduce + 任务队列)在this article 中有很好的描述:

    Google App Engine Pipeline API 将复杂的连接在一起, 工作流程(包括人工任务)。目标是灵活性、工作流程 重用性和可测试性。

    【讨论】:

    • :/ 我已经通读了所有这些内容:)。这只是大约十亿种不同的方式,每一种都有自己的怪癖/限制,所以我希望得到有更多经验的人的反馈。但是第一行很有帮助:)
    • 我读到你了 :) 到目前为止,cron + push queues 满足了我的所有需求。
    【解决方案2】:

    根据您正在执行的确切操作以及您正在执行的数据量,两者都可以工作。然而,MapReduce 更适合此类任务。

    如果您担心 csv 部分,让我告诉您如何做到这一点。您可以使用代码上传 csv 文件,然后使用如下代码:

    fo = open("file_path/file_name.csv", "r")
    fr= fo.read()
    csv_io = StringIO.StringIO(fr)
    reader = csv.reader(csv_io)
    

    现在这个阅读器是一个包含文件中所有行的列表,每一行是原始 csv 文件中用逗号 (,) 分隔的不同值的列表。您可以使用 for 循环/迭代器来遍历行,并且在每行内您可以使用另一个 for 循环/迭代器来读取不同的值。

    【讨论】:

    • 哈哈 :) 我不会为此创建一个 csv 文件。这不是正确的应用程序。但感谢您的评论。我最终使用了一个拉队列。
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 2023-03-12
    相关资源
    最近更新 更多