Skip to content

Commit 3e651ae

Browse files
author
libertyzhu
committed
修复多进程并发场景下的一些冲突问题
1 parent cc7496b commit 3e651ae

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

qcloud_cos/resumable_downloader.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import json
44
import os
55
import sys
6+
import errno
67
import threading
78
import logging
89
import uuid
@@ -45,7 +46,14 @@ def __init__(self, cos_client, bucket, key, dest_filename, object_info, part_siz
4546
self.__tmp_file = None
4647

4748
if not os.path.exists(self.__dump_record_dir):
48-
os.makedirs(self.__dump_record_dir)
49+
# 多进程并发情况下makedirs会出现冲突, 需要进行异常捕获
50+
try:
51+
os.makedirs(self.__dump_record_dir)
52+
except OSError as e:
53+
if e.errno != errno.EEXIST:
54+
logger.error('os makedir error: dir: {0}, errno {1}'.format(self.__dump_record_dir), e.errno)
55+
raise
56+
pass
4957
logger.debug('resumale downloader init finish, bucket: {0}, key: {1}'.format(bucket, key))
5058

5159
def start(self):

0 commit comments

Comments
 (0)