Skip to content

Commit 9460f0e

Browse files
author
yuniszhang
committed
解决get_auth并发问题
1 parent 2b8ff21 commit 9460f0e

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

qcloud_cos/cos_client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,14 @@ def get_auth(self, Method, Bucket, Key, Expired=300, Headers={}, Params={}, Sign
240240
)
241241
print (auth_string)
242242
"""
243+
244+
# 解决一个没有搞懂的问题:如果保持参数Headers={},那么实测会发现两个线程的Headers指向同一个内存地址,
245+
# request.headers=Headers,后续会用request.headers来保存Authorization值,在多线程并发时就会出现Authorization值被其它线程改写
246+
if not Headers:
247+
Headers = dict() # 重新生成实例,避免Request通过{}复用内存
248+
if not Params:
249+
Params = dict() # 重新生成实例,避免Request通过{}复用内存
250+
243251
url = self._conf.uri(bucket=Bucket, path=Key)
244252
r = Request(Method, url, headers=Headers, params=Params)
245253
auth = CosS3Auth(self._conf, Key, Params, Expired, SignHost)

ut/test.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import os
77
import requests
88
import json
9-
10-
from requests.models import Response
11-
129
import base64
1310

1411
from qcloud_cos import CosS3Client

0 commit comments

Comments
 (0)