在 Python 2 中使用拉取队列
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
本页面简要介绍了 App Engine 标准环境中的拉取队列。
push在推送队列中,系统会根据队列的配置将任务传送到工作器服务。在拉取队列中,工作器服务必须向队列请求任务。队列会做出响应,向该工作器授予在指定的时间段内处理任务的唯一访问权限,这称为“租用”。
使用拉取队列,您还可以使用标记对相关任务进行分组,然后将工作器配置为一次性提取多个带有特定标记的任务。此过程称为“批处理”。
如果工作器在租用到期时未能处理某个任务,则可以进行续租或者让任务租用自动到期,此时其他工作器便可以租用该任务。完成与任务相关的工作后,工作器必须删除该任务。
如果使用拉取队列,则会要求您的代码处理一些在推送队列中自动执行的功能:
- 增减工作器
- 您的代码需要根据处理量来扩缩工作器的数量。如果您的代码无法实现扩缩,则在没有任务需要处理时,您可能会浪费计算资源;而如果有太多任务需要处理,您又可能会面临延迟风险。
- 删除任务
- 您的代码还需要在处理任务后明确删除任务。在推送队列中,App Engine 会为您删除任务。如果您的工作器在处理拉取队列任务后未删除相应任务,则另一个工作器将再次处理该任务。这会浪费计算资源;并且如果任务不具有幂等性,还会有出错的风险。
App Engine 标准环境中的拉取队列通过在名为 queue.yaml
的配置文件中设置属性来创建。
拉取队列工作流
从拉取队列处理任务的工作器,必须在运行于 App Engine 标准环境中的服务内加以定义。
工作流如下:
- 使用
queue.yaml
创建拉取队列。
- 创建任务并将其添加到队列中。
- 您创建的工作器使用 TaskQueue 租用任务。
- App Engine 在租用响应中将任务数据发送给工作器。
- 工作器处理该任务。如果该任务在租用到期之前未能执行,则工作器可以修改租用时长。如果租用到期,则其他工作器将可以租用该任务。
- 成功处理任务后,工作器删除任务。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-07-19。
[{
"type": "thumb-down",
"id": "hardToUnderstand",
"label":"Hard to understand"
},{
"type": "thumb-down",
"id": "incorrectInformationOrSampleCode",
"label":"Incorrect information or sample code"
},{
"type": "thumb-down",
"id": "missingTheInformationSamplesINeed",
"label":"Missing the information/samples I need"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-07-19\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-07-19。"]]