From 794f3209d2d446f744080c7f78fdec748068c267 Mon Sep 17 00:00:00 2001 From: gaoxin Date: Tue, 9 Nov 2021 11:18:38 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E9=85=8D=E7=BD=AE=E3=80=91=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=93=9D=E9=B2=B8cdn=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tools/cos_lj/Flush.py | 35 +++++++++++ Tools/cos_lj/UpLoad.py | 131 ++++++++++++++++++++++++++++++++++++++++ Tools/cos_lj/_Readme.md | 10 +++ 3 files changed, 176 insertions(+) create mode 100644 Tools/cos_lj/Flush.py create mode 100644 Tools/cos_lj/UpLoad.py create mode 100644 Tools/cos_lj/_Readme.md diff --git a/Tools/cos_lj/Flush.py b/Tools/cos_lj/Flush.py new file mode 100644 index 000000000..66529bd33 --- /dev/null +++ b/Tools/cos_lj/Flush.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +import json +import sys +from tencentcloud.common import credential +from tencentcloud.common.profile.client_profile import ClientProfile +from tencentcloud.common.profile.http_profile import HttpProfile +from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException +from tencentcloud.cdn.v20180606 import cdn_client, models + + +if sys.argv.__len__() == 2: + try: + path = sys.argv[1] + cred = credential.Credential("AKIDWrwlJbAMyOaYGjuzlHciZHkxve7K7Fp8", "B7mALGwOaXJrACyThjUzDArITNUMPFp9") + httpProfile = HttpProfile() + httpProfile.endpoint = "cdn.tencentcloudapi.com" + + clientProfile = ClientProfile() + clientProfile.httpProfile = httpProfile + client = cdn_client.CdnClient(cred, "", clientProfile) + + req = models.PurgePathCacheRequest() + params = { + "Paths": [ path ], + "FlushType": "flush" + } + req.from_json_string(json.dumps(params)) + + resp = client.PurgePathCache(req) + print(resp.to_json_string()) + + except TencentCloudSDKException as err: + print(err) +else: + print("params error!") diff --git a/Tools/cos_lj/UpLoad.py b/Tools/cos_lj/UpLoad.py new file mode 100644 index 000000000..895ae69a9 --- /dev/null +++ b/Tools/cos_lj/UpLoad.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +# Auther Wang Qi +# !usrbinenv python +# encoding utf-8 +import os +import sys +import base64 +import hashlib +import requests +import subprocess +import urllib3 +import logging +import time +import random +import argparse +import json +from threading import Thread, current_thread +from concurrent.futures import ProcessPoolExecutor +from qcloud_cos import CosConfig +from qcloud_cos import CosS3Client + + # url = "http://jl.tyu89.wang/" + cos_object_key + # print(url) + #self.flushurl(url) + # def flushurl(self,url) + # keydict = { + # 'Action' 'RefreshCdnUrl', + # 'Timestamp' str(int(time.time())), + # 'Nonce' str(int(random.random() 1000)), + # 'SecretId' jlrg.secret_id, + # 'urls.0' url + # } + # return keydict + +def upload_file_to_txy_cos(self, path, file): + file = file.replace("\\", "/") + path = path.replace("\\", "/") + local_file_path = path + file + print(local_file_path) + cos_object_key = self.cdn_sub_dir + "/" + self.platform +"/" + file + print(cos_object_key) + response = self.client.upload_file( + Bucket=self.bucket, + LocalFilePath=local_file_path, + Key=cos_object_key, + PartSize=1, + MAXThread=10, + EnableMD5=False + ) + print(response['ETag']) + +class Cos_Upload(): + logging.basicConfig(level=logging.INFO, stream=sys.stdout) + def __init__(self, *args): + abDir = args[0] + settingDir = args[1] + changeVersion = args[2] + isThread = "1" + if args.__len__() > 3: + isThread = args[3] + + self.init(abDir, settingDir, changeVersion, isThread) + + def init(self, abDir, settingDir, changeVersion, isThread): + self.settingFile = "Setting.txt" + self.configFile = "config.txt" + self.versionFile = "version.txt" + + self.fileList = [] + self.ab_dir = abDir + self.setting_dir = self.ab_dir + "/" + settingDir + self.change_version = changeVersion + self.change_file = self.setting_dir + "/__HotFixLog/" + changeVersion + ".log" + self.loadSetting() + + self.IsThread = isThread + + # cdn config + self.bucket = 'jl-1253729609' + self.secret_id = "AKIDWrwlJbAMyOaYGjuzlHciZHkxve7K7Fp8" + self.secret_key = "B7mALGwOaXJrACyThjUzDArITNUMPFp9" + self.region = "ap-guangzhou" + self.config = CosConfig(Region=self.region, SecretId=self.secret_id, SecretKey=self.secret_key, Token=None, Scheme='https') + self.client = CosS3Client(self.config) + + def loadSetting(self): + settingContent = open(self.setting_dir +"/"+ self.settingFile, "rb") + settingJson = json.load(settingContent) + self.cdn_sub_dir = settingJson["dir"] + self.platform = settingJson["platform"] + + def get_all_file(self): + fo = open(self.change_file, "r") + files = fo.readlines() + #print(files) + for f in files: + file = f.strip() + self.fileList.append(file) + return self.fileList + + def up(self): + filelist = self.get_all_file() + if self.IsThread == "1": + pool = ProcessPoolExecutor(4) + for file in filelist: + pool.submit(upload_file_to_txy_cos, self, self.ab_dir + "/" + self.platform + "/", file) + pool.submit(upload_file_to_txy_cos, self, self.setting_dir +"/", self.configFile) + pool.submit(upload_file_to_txy_cos, self, self.setting_dir +"/", self.versionFile) + else: + for file in filelist: + upload_file_to_txy_cos(self, self.ab_dir + "/" + self.platform + "/", file) + upload_file_to_txy_cos(self, self.setting_dir +"/", self.configFile) + upload_file_to_txy_cos(self, self.setting_dir +"/", self.versionFile) + + + +if __name__ == '__main__': + if sys.argv.__len__() == 4: + t = Cos_Upload(sys.argv[1], sys.argv[2], sys.argv[3]) + t.up() + elif sys.argv.__len__() == 5: + t = Cos_Upload(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) + t.up() + else: + print("params error!") + + + +# if __name__ == '__main__': +# z = Cos_Upload("D:/HotFix/Root/mht_china/local", "cdn_v3", 'version_1') +# z.up() diff --git a/Tools/cos_lj/_Readme.md b/Tools/cos_lj/_Readme.md new file mode 100644 index 000000000..61a29a418 --- /dev/null +++ b/Tools/cos_lj/_Readme.md @@ -0,0 +1,10 @@ +依赖:python 2.7 + +安装多线程库 +pip install futures + +安装 腾讯云 cosclient +pip install cos-python-sdk-v5 + +安装 tencentcloud-sdk-python +pip install tencentcloud-sdk-python \ No newline at end of file