Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 批量排队Google云任务_Google App Engine_Google Cloud Platform_Google Cloud Tasks - Fatal编程技术网

Google app engine 批量排队Google云任务

Google app engine 批量排队Google云任务,google-app-engine,google-cloud-platform,google-cloud-tasks,Google App Engine,Google Cloud Platform,Google Cloud Tasks,作为将我的Google App Engine标准项目从python2迁移到python3的一部分,看起来我还需要从使用Taskqueue API&Library切换到Google云任务 在taskqueue库中,我一次最多可以将100个任务排队,就像这样 taskqueue.Queue('default').add([...task objects...]) 以及将任务异步排队 在新的库和新的API中,看起来一次只能让一个任务排队 我有一个端点,它接收一个包含数千个元素的批处理,每个元

作为将我的Google App Engine标准项目从python2迁移到python3的一部分,看起来我还需要从使用Taskqueue API&Library切换到Google云任务

在taskqueue库中,我一次最多可以将100个任务排队,就像这样

taskqueue.Queue('default').add([...task objects...])
以及将任务异步排队

在新的库和新的API中,看起来一次只能让一个任务排队


我有一个端点,它接收一个包含数千个元素的批处理,每个元素都需要在单个任务中处理。我应该怎么做呢?

为了重新创建批量拉取机制,您必须切换到发布/订阅。云任务没有拉取队列。通过Pub/Sub,您可以查看和发送消息


如果您使用的是推送队列体系结构,我建议将这些元素作为任务传递;但是,最大任务大小限制为。

为了重新创建批处理拉取机制,您必须切换到发布/订阅。云任务没有拉取队列。通过Pub/Sub,您可以查看和发送消息


如果您使用的是推送队列体系结构,我建议将这些元素作为任务传递;但是,最大任务大小仅限于。

根据官方文档(,)异步将任务添加到队列的功能(正如post建议将大量任务添加到队列)不是通过云任务API可用的功能。不过,它是可供选择的

然而,文档中有一个关于通过双注入模式解决方案将大量云任务添加到队列的问题(可能看起来也很有用)

要实现此场景,您需要创建一个新的注入器队列,该队列的单个任务将包含在您使用的原始队列中添加多个(100)任务的信息。在这个注入器队列的接收端将是一个服务,它实际将预期任务添加到原始队列中。尽管此服务中的任务添加将是同步的,并且是逐个添加的,但它将为主应用程序提供一个异步接口来批量添加任务。通过这种方式,您可以克服主应用程序中同步、逐个添加任务的限制

  • 请注意,500/50/5任务添加到队列的模式是一种建议的方法,以避免任何(队列/目标)过载
由于我没有找到此实现的任何示例,我将在找到一个示例后立即编辑答案

由于您正处于迁移过程中,我认为这会很有用,因为它涉及到从任务队列到云任务的迁移(正如您所说的那样)


有关迁移代码的其他信息,以及您可以找到的所有可用详细信息,以及关于将队列拉到云发布/订阅迁移和将队列推到云任务迁移的相关信息。

根据官方文档(,)将任务异步添加到队列的功能(正如post建议将大量任务添加到队列中一样,不是通过云任务API提供的功能

然而,文档中有一个关于通过双注入模式解决方案将大量云任务添加到队列的问题(可能看起来也很有用)

要实现此场景,您需要创建一个新的注入器队列,其单个任务将包含要添加多个(100)的信息您正在使用的原始队列的任务。此注入器队列的接收端将是一个服务,该服务将实际向原始队列添加预期任务。尽管此服务中添加的任务将是同步的,并且是逐个添加的,但它将向主应用程序提供一个异步接口,以便批量添加任务通过这种方式,您可以克服主应用程序中同步、逐个添加任务的限制

  • 请注意,500/50/5任务添加到队列的模式是一种建议的方法,以避免任何(队列/目标)过载
由于我没有找到此实现的任何示例,我将在找到一个示例后立即编辑答案

由于您正处于迁移过程中,我认为这会很有用,因为它涉及到从任务队列到云任务的迁移(正如您所说的那样)


有关迁移代码的其他信息,以及您可以找到的所有可用详细信息,以及关于将队列拉到云发布/订阅迁移和将队列推到云任务迁移的相关信息。

“我建议将这些元素作为任务负载传递。”所以把所有的元素都传递到一个任务中?然后呢?我试着让它们并行处理。它们需要在某个时候分解成单独的任务,对吗?(顺便说一下,我正在做批量推送)那可能对你不起作用。我不确定我是否理解你的用例。每个元素都是一个事务,我需要与我系统中的一个用户匹配。一旦匹配,我可能需要向用户计费,这涉及到对braintree进行HTTP调用。无论使用何种用例,并行处理每个元素都应该更有效第二,在任务挂起并重新运行的情况下,更容易使单个任务幂等;如果单个任务连续处理所有任务,如果它崩溃并重新运行,我需要一种机制,它可以找出上次在哪里中断。关于他重试逻辑。您的任务处理发生在哪里?如果您正确设置队列并将每个事务添加到任务中,您的处理器应该能够处理尽可能多的任务(几乎并行)。或者您的任务需要共享信息吗?它发生在App Engine标准Python2上(最终成为Python3)。“a