本文介绍如何在上传、下载文件时,通过在请求中携带x-oss-traffic-limit参数并设置限速值,以保证其他应用的正常带宽。

说明 有关单链接限速的使用场景及注意事项的更多信息,请参考开发指南的 单链接限速文档。

普通上传下载限速

以下代码用于普通上传、下载文件时设置单链接限速:

# -*- coding: utf-8 -*-

import oss2
from oss2.models import OSS_TRAFFIC_LIMIT

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourRequestBucketName>')

object_name = '<yourobjectName>'
local_file_name = '<yourLocalFileName>'
down_file_name = '<yourDownloadFileName>'

# 限速100KB/s,即819200bit/s, 在headers中设置。
limit_speed = (100 * 1024 * 8)
headers = dict()
headers[OSS_TRAFFIC_LIMIT] = str(limit_speed);

# 限速上传文件。
result = bucket.put_object_from_file(object_name, local_file_name, headers=headers)
print('http response status:', result.status)

# 限速下载文件到本地。
result = bucket.get_object_to_file(object_name, down_file_name, headers=headers)
print('http response status:', result.status)

使用签名URL方式上传下载限速

以下代码用于使用签名URL方式上传、下载文件时设置单链接限速:

# -*- coding: utf-8 -*-

import oss2
from oss2.models import OSS_TRAFFIC_LIMIT

# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourRequestBucketName>')

object_name = '<yourobjectName>'
local_file_name = '<yourLocalFileName>'
down_file_name = '<yourDownloadFileName>'

# 限速100KB/s,即819200bit/s,在params中设置。
limit_speed = (100 * 1024 * 8)
params = dict()
params[OSS_TRAFFIC_LIMIT] = str(limit_speed);

# 创建限速上传文件的签名url, 有效期60s。
url = bucket.sign_url('PUT', object_name, 60, params=params)
print('put object url:', url)

# 限速上传。
result = bucket.put_object_with_url_from_file(url, local_file_name)
print('http response status:', result.status)

# 创建限速下载文件的签名url, 有效期60s。
url = bucket.sign_url('GET', object_name, 60, params=params)
print('get object url:', url)

# 限速下载。
result = bucket.get_object_with_url_to_file(url, down_file_name)
print('http response status:', result.status)