异步写入 appengine blob 并在所有任务完成时完成它

2023-11-30

我有一个难题。

我正在迭代一组按日期参数化的 URL 并获取它们。例如,下面是一个示例:

somewebservice.com?start=01-01-2012&end=01-10-2012

有时,从 URL 返回的内容会被截断(缺少带有“截断错误”消息的随机结果),因为我定义的范围太大,所以我必须将查询拆分为两个 URL

somewebservice.com?start=01-01-2012&end=01-05-2012

somewebservice.com?start=01-06-2012&end=01-10-2012

我递归地执行此操作,直到结果不再被截断,然后写入允许并发写入的 blob。

每个 URL 获取调用/blob 写入都在单独的任务队列任务中处理。

问题是,我一生都无法设计一个计划来知道所有任务何时完成。我尝试过使用分片计数器,但递归使其变得困难。有人建议我使用 Pipeline API,所以我看了 Slatkin 的演讲 3 遍。它似乎不适用于递归(但我承认我仍然没有完全理解该库)。

无论如何,是否有办法知道一组任务队列任务(以及递归生成的子任务)何时完成,以便我可以完成我的 blob 并对其执行任何操作?

谢谢, 约翰


你读过吗管道入门文档?管道可以创建其他管道并等待它们,因此做你想做的事情相当简单:

class RecursivePipeline(pipeline.Pipeline):
  def run(self, param):
    if some_condition: # Too big to process in one
      p1 = yield RecursivePipeline(param1)
      p2 = yield RecursivePipeline(param2)
      yield RecursiveCombiningPipeline(p1, p2)

Where RecursiveCombiningPipeline只是充当两个子管道的值的接收器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步写入 appengine blob 并在所有任务完成时完成它 的相关文章

随机推荐

  • 客户端路由(使用react-router)和服务器端路由

    我一直在思考 对Client和Server之间的路由感到困惑 假设我在将请求发送回Web浏览器之前使用ReactJS进行服务器端渲染 并使用react router作为客户端路由来在页面之间切换 而无需像SPA那样刷新 我想到的是 路线如何
  • 在 WPF 应用程序中使用 WinRT 库。

    我在这里关注了这篇文章 http blogs msdn com b eternalcoding archive 2013 10 29 how to use specific winrt api from desktop apps captu
  • 代码点火器错误 403

    我是 CodeIgniter 一般框架的完全初学者 我尝试了 Laravel 和 CakePHP 但两者安装起来都非常复杂 对我来说 所以现在我已经下载了 CI 除了这个访问被拒绝错误之外 它看起来非常简单 该错误是默认的 Firefox
  • 在 UpdateProgress 期间隐藏 UpdatePanel

    我正在寻找在等待提交响应返回时隐藏 UpdatePanel 的最简单方法 东西就像这里描述的那样 使用 Ajax Control Toolkit 和 UpdatePanelAnimationExtender 既过度杀伤又导致一些问题 即 因
  • 如何在锚标记内编写 ::before / ::after

    如何在锚标记内编写 before 如下所示 你在这里看到的是一个CSS伪元素 before伪元素可用于在元素内容之前插入一些内容 例如 以下代码将插入This comes before 在每个段落之前 p before content Th
  • SceneKit 中的 COLLADA 转换

    我们尝试在Xcode中制作模型查看器并使用SceneKit来渲染模型 如果我们将 COLLADA dae 文件添加到 Xcode 它会使用以下命令转换模型scntool to c3d格式 在互联网上找到的 但我们希望在运行时加载模型 我们将
  • epoll 在客户端断开连接时循环

    我正在尝试使用以下方式实现套接字服务器epoll 我有 2 个线程执行 2 个任务 监听传入的连接 在屏幕上写入客户端发送的数据 对于我的测试 我将客户端和服务器放在同一台计算机上 并运行 3 或 4 个客户端 服务器工作正常 直到我不通过
  • 如何使用 scipy.optimize 中的 curve_fit 以及跨多个数据集的共享拟合参数?

    假设我有一个拟合函数f具有多个参数 例如a and b 现在我想将多个数据集拟合到这个函数并使用相同的a对于所有这些 共享参数 同时b每个配件都可以是单独的 Example import numpy as np Fit function d
  • 交换 numpy 矩阵中的零

    我有一个像这样的 numpy 矩阵 array 2 1 23 32 34 3 3 0 3 33 0 0 32 0 0 0 dtype int32 现在我想将所有数字向右移动并将零交换到左侧 如下所示 array 2 1 23 32 0 34
  • 如何将绑定源过滤器重置为空

    Using BindingSource在 LINQ to SQL 上 并实现了BindingList在我的项目中 我必须使用Textbox过滤 a 中的行DataGridView 所以当我删除文本框内容时 Filter 应该重置为空 我的代
  • 如何摆脱 Angular Material 额外的样式和由它“强制”链接的 CSS

    我正在使用 JSPM SystemJS 我正在使用 Angular Material 和额外的表库 它也导入 Angular Material I also 很想使用 SASS ONLY 版本Angular Material by impo
  • 关于使用Scanner时InputMismatchException的问题

    问题 输入文件 客户的账号 账户余额 月初 交易类型 取款 存款 利息 交易金额 Output 帐号 期初余额 期末余额 支付的利息总额 存款总额 存款数量 存款 取款总额 取款次数 package sentinel import java
  • 如何在 GAE 上的 Django 中使用 django-google-cloud-storage 进行 GCS

    如何将 Django 自定义存储后端与 Google Cloud Storage 结合使用 尝试使用这个 ckopanos 的 django google cloud storage 根据文档 我已将以下内容添加到我的 settings p
  • 更改默认的 git hooks

    不确定这在 git 中是否可行 我还没有找到它 但我可能在搜索中使用了错误的词汇 但是能够修改和启用钩子作为所有新存储库的默认值会很有用 在我的意思是创建时间 因此不必在每次创建新存储库时都进行自定义 似乎最简单的方法是编写一个包装器 在创
  • (C) 在屏幕上和文件中打印所有 CP850 字符的程序具有不同的输出

    该程序非常简单 它帮助我获得了所有 ascii 代码 因为我的计算机似乎不遵循互联网中的标准 我发现的问题是文件和 cmd 上的输出不同 我需要在打印文件并在屏幕上显示的项目中使用框字符 但文件输出显然没有它们 define CRT SEC
  • 在 Gradle 构建中配置多个上传存储库

    我想将我的工件上传到远程 Nexus 存储库 因此我在 Nexus 中配置了快照和发布存储库 部署到两个作品 现在我想配置我的构建 以便我可以决定要部署在哪个存储库中 gradle uploadArchives应该部署到我的快照存储库 gr
  • 轻量级跨平台提示文件的方式

    我发现了一种非常内置且简单的方法来提示系统特定的漂亮的打开文件对话框 import Tkinter from tkFileDialog import askopenfilename tk root Tkinter Tk tk root wi
  • 吞吐量和响应时间有何关系

    我对 193 个样本进行了 JMeter 测试 我可以看到我的平均响应时间为 5915 毫秒 吞吐量为 1 19832 我只是想知道它们到底有什么关系 所有的答案都在JMeter 术语表 已过去的时间 JMeter 测量从发送请求之前到收到
  • 将正则表达式转换/编译为 C 代码

    我的系统内存有限 boost regex太大了 有哪些选项可以将我的正则表达式直接编译为 C C 以及我应该排除多少 KB 的代码大小 目标是尽可能减少内存和代码大小 我正在寻找 100kb 以下的代码大小和相同的内存使用量 Boost 正
  • 异步写入 appengine blob 并在所有任务完成时完成它

    我有一个难题 我正在迭代一组按日期参数化的 URL 并获取它们 例如 下面是一个示例 somewebservice com start 01 01 2012 end 01 10 2012 有时 从 URL 返回的内容会被截断 缺少带有 截断