使用GoogleCloudStorageComposeOperator触发429 TooManyRequests问题咨询
限制匹配结论
是的,你触发的就是GCS官方规定的同一对象名称每秒1次写入限制。GoogleCloudStorageComposeOperator执行时会将多个源对象合并后写入指定的目标对象路径,如果你对path/file.csv这个路径在1秒内发起多次写入请求,就会命中该限制,返回429 TooManyRequests错误,和你收到的报错提示完全吻合。
不依赖重试的规避方案
- 优化目标对象命名规则,避免高频写入同一路径。如果业务允许不同批次的合并结果使用不同对象名,可在文件名中加入批次ID、时间戳等唯一标识,例如将固定路径
path/file.csv调整为path/file_{batch_id}_{unix_timestamp}.csv,从根源上消除同一对象的高频写入场景。 - 批量聚合compose请求。如果必须使用固定目标路径,可提前聚合短时间内的所有compose需求,攒齐所有需要合并的源对象后仅发起一次compose操作,大幅降低同一对象的写入频次。
- 调整任务执行时序。如果compose任务是在定时调度的DAG中运行,且不同DAG Run都会写入同一个目标对象,可将DAG调度间隔调整至1秒以上,或为compose任务添加上次执行完成校验逻辑,确保两次对同一对象的写入操作间隔至少1秒。
- 临时路径中转后合并。如果是多并行任务都需要向同一路径写入的场景,先让每个并行任务将compose结果写入专属临时路径,待所有并行任务执行完毕后,再用单个收尾任务将所有临时路径的对象合并为最终的目标对象,全程仅最后一次操作写入目标路径,不会触发限速。
内容的提问来源于stack exchange,提问作者Frans
相关产品推荐
相关产品推荐

