Python 使用云任务、云函数和GAE快速创建云任务

Python 使用云任务、云函数和GAE快速创建云任务,python,google-app-engine,google-cloud-platform,google-cloud-tasks,Python,Google App Engine,Google Cloud Platform,Google Cloud Tasks,我正在使用App Engine根据列表中的项目触发多个云任务的创建: function_url="https://us-central1-myproject.cloudfunctions.net/some-cloud-function" someTasks = [ {'id': 'task-1'}, {'id': 'task-2'}, {'id': 'task-3'}, ... {'id': 'task-1000'}, ] 任务当前使用以下方法创建: Parallel(backend='th

我正在使用App Engine根据列表中的项目触发多个云任务的创建:

function_url="https://us-central1-myproject.cloudfunctions.net/some-cloud-function"

someTasks = [
{'id': 'task-1'},
{'id': 'task-2'},
{'id': 'task-3'},
...
{'id': 'task-1000'},
]
任务当前使用以下方法创建:

Parallel(backend='threading', n_jobs=100)(
        delayed(create_document_task)(function_url=function_uri, data=task) for task in someTasks 
                    )
上面的代码并行创建任务,并指示任务队列将有效负载定向到特定的云函数

并行执行此操作是否是快速创建任务的正确方法

- I am posting this as an answer, due to the amount of text not fitting in a comment.
在评论方法中,似乎有上述内容:

队列“someQueue”。添加\u异步任务 这确实是一种古老的方法。此方法在中实现,以便将任务或任务列表异步添加到中

然而,如上所述,App引擎任务队列REST API v1在2018年2月20日被拒绝。单独的产品云任务提供了一个可用于添加来自第二代App Engine标准环境运行时、任何App Engine灵活环境运行时甚至完全来自App Engine外部的任务的

此API不包括“添加异步”功能。更具体地说,并确认,作为的用户,将任务异步添加到队列的功能不是通过云任务API提供的功能

尽管如此,当需要添加大量云任务(例如数百万或数十亿)时

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

请注意,建议使用500/50/5模式将任务添加到队列中,以避免任何队列/目标重载

由于我没有找到此实现的任何示例,我将在找到一个示例后立即编辑答案


我希望这有帮助。

不,您应该批量提交以减少API调用的数量。请参阅上面提到的旧应用程序引擎任务队列具有异步批处理添加。但是,我不建议使用旧的功能,特别是如果您已经迁移到云任务上。@Averikitch是旧方法之上的吗?如果不是这样,您知道如何将任务批量添加到队列中吗?谢谢,这真的很有用。从另一个角度看,我最初的想法似乎正朝着正确的方向发展。但是我应该让它成为一种服务,它可以限制并接收来自原始任务列表/队列的一批“待创建”任务,但作为一种服务,它还可以根据原始队列/列表中的任务数量进行扩展?1/2-是。服务/注入器队列可以随着时间的推移而加速,例如从5 TPS开始,然后每5分钟增加50%。请注意,当扩展速度超过500 TPS时,每5分钟应增加不超过50%的流量。建议遵循500/50/5的任务添加模式,以避免队列/目标过载。2/2-此外,如果任务是由应用程序引擎应用程序创建的,则可以利用应用程序引擎流量拆分标准/Flex来平滑流量增加。链接对于理解场景可能很有用。