MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / TransferMgr

Class TransferMgr

client/task/transfermgr.py:30–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28
29
30class TransferMgr(object):
31 def upload_file(self, path_dict):
32 '''
33 上传需要传递的资源文件
34 :param path_dict:{
35 'params_key_name'(params中的字段名): 绝对路径
36 }
37 :return: 传输中间数据文件 transfer_info
38 '''
39 path_list = []
40 for param_name in path_dict.keys():
41 path_list.append(
42 {
43 'params_key_name': param_name,
44 'rel_path': os.path.relpath(path_dict[param_name], DATA_BASE) # 此处要想一想,是有必要这样
45 }
46 )
47
48 for item in path_list:
49 file_path = os.path.join(DATA_BASE, item['rel_path'])
50 tmp_zip_file = tempfile.mktemp(prefix='zip_', dir=DATA_BASE, suffix='.zip')
51 Zip().compress(file_path, tmp_zip_file)
52
53 # 获取一个八位的随机码作为文件名,防止重名
54 file_name = ''.join(random.sample(string.ascii_letters + string.digits, 8))
55 file_server = RetryFileServer(retry_times=2).get_server()
56 file_server.upload_file(tmp_zip_file, f"sourcedir/{file_name}")
57 PathMgr().rmpath(tmp_zip_file)
58 item['download_name'] = file_name
59 return {
60 'isP2P': False,
61 'path_list': path_list
62 }
63
64 def download_file(self, transfer_info):
65 '''
66 下载资源文件
67 '''
68 logger.info('download file: 开始执行中间文件下载。。。')
69 logger.info('download file: 传输模式为文件服务器')
70 name_list = [path_dict['download_name'] for path_dict in transfer_info['path_list']]
71 path_dict = {}
72 for item in transfer_info['path_list']:
73 path_dict[item['download_name']] = item['rel_path']
74 re = Downloader.file_server_download(path_dict=path_dict)
75 if re:
76 logger.info('download file: 传输完成')
77 return True
78 logger.info('download file: 传输失败')
79 raise TransferModuleError('传输模块,执行文件服务器拉取失败,请检查!')
80
81
82if __name__ == "__main__":

Callers 2

uploadMethod · 0.90
downloadMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected