作为将我的Google App Engine标准项目从python2迁移到python3的一部分,看来我还需要从使用Taskqueue API和库切换到google-cloud-tasks。
在任务队列库中,我一次最多可以入队100个任务
taskqueue.Queue('default').add([...task objects...])
以及异步排队任务。
在新库和新API中,您一次只能使一个任务入队
我有一个端点,该端点接收具有数千个元素的批处理,每个元素都需要在单个任务中进行处理。我该怎么办?
答案 0 :(得分:0)
为了重新创建批处理拉取机制,您将不得不切换到Pub / Sub。云任务没有拉入队列。使用发布/订阅,您可以batch push和batch pull消息。
答案 1 :(得分:0)
根据官方文档(reference 1,reference 2),异步将任务添加到队列中的功能(如this帖子中建议将大量任务添加到队列中)是通过Cloud Tasks API 否可用功能。尽管users of App Engine SDK可用。
但是,文档中有reference,涉及通过两次注入模式变通方法将大量Cloud Tasks添加到队列中(this post似乎也很有用)。
要实现此方案,您需要创建一个新的注入器队列,该注入器队列的单个任务将包含用于添加所使用原始队列的多个(100)任务的信息。在该注入器队列的接收端将是一个服务,该服务会将预期任务实际添加到原始队列中。尽管此服务中的任务添加是同步的,并且是1比1的,但它将为您的主应用程序提供异步接口以批量添加任务。通过这种方式,您可以克服主应用程序中同步添加1比1任务的局限性。
- 请注意,为避免任何(队列/目标)重载,建议使用 500/50/5模式将任务添加到队列。
由于我没有找到此实现方式的任何示例,因此我将在找到答案后立即对其进行编辑。
由于您正在进行迁移,因此我发现this link很有用,因为它涉及从任务队列迁移到云任务(正如您所说的那样)。
有关将代码与所有可用详细信息一起迁移的其他信息,您可以找到here和here,分别与将队列放入Cloud Pub / Sub迁移和将队列放入Cloud Tasks迁移有关。