Download code/multi_vlm2vec_train/dataset/tfsClient.py from WaitXian/liqi: direct link, hf CLI and curl.
- Browser
- Download file 3.27 kB
-
https://huggingface.co/WaitXian/liqi/resolve/main/code/multi_vlm2vec_train/dataset/tfsClient.py
- Command line
-
hf download hf://WaitXian/liqi/code/multi_vlm2vec_train/dataset/tfsClient.py
-
curl -L -o tfsClient.py https://huggingface.co/WaitXian/liqi/resolve/main/code/multi_vlm2vec_train/dataset/tfsClient.py
3.27 kB
| # -*- encoding: utf-8 -*- | |
| """ | |
| @File : tfsManager.py | |
| @Contact : zhangwang.zhang@alibaba-inc.com | |
| @License : (C)Copyright 2021, Alibaba Group | |
| @Modify Time @Author @Version @Desciption | |
| ------------ ------- -------- ----------- | |
| 2021/10/20 21:53 heqing 1.0 None | |
| # import lib | |
| from tfsClient import tfsManager | |
| # 初始化客户端(初始化一次即可) | |
| downloader = tfsManager('1316bec91c411') | |
| response = downloader.fetchFile('O1CN01LkpGBC1itIwx70XNy_!!0-rate.jpg', timeout=3) | |
| """ | |
| import random | |
| import time | |
| import urllib | |
| import urllib.request | |
| # import lib | |
| import requests | |
| class tfsError(Exception): | |
| """base tfs Error""" | |
| class tfsManager: | |
| def __init__(self, appkey): | |
| self.appKey = str(appkey) | |
| self.tmpTfsProxyList = [] | |
| self.lastRefreshTime = 0 | |
| def getTfsProxyList(self): | |
| """ | |
| 获取tfs的vip列表 | |
| """ | |
| try: | |
| tfsResponse = requests.get( | |
| "http://restful-store.vip.tbsite.net:3800/tfs.list" | |
| ) | |
| if tfsResponse.status_code == 200: | |
| self.tmpTfsProxyList = tfsResponse.text.split("\n")[1:] | |
| if len(self.tmpTfsProxyList) == 0: | |
| raise RuntimeError("tmpTfsProxyList is empty") | |
| self.lastRefreshTime = time.time() | |
| else: | |
| raise tfsError("ResponseError:", tfsResponse.status_code) | |
| except requests.ConnectionError: | |
| raise tfsError("ConnectionError:", str(requests.ConnectionError)) | |
| def refreshTfsProxyList(self): | |
| """ | |
| 判断是否需要刷新vip列表 | |
| """ | |
| needRefresh = False | |
| if len(self.tmpTfsProxyList) == 0: | |
| needRefresh = True | |
| else: | |
| diffTime = time.time() - self.lastRefreshTime | |
| if diffTime >= 60: | |
| needRefresh = True | |
| if needRefresh: | |
| self.getTfsProxyList() | |
| def fetchFile(self, tfsFileName, timeout=None): | |
| """ | |
| 从tfs服务器获取文件 | |
| :param tfsFileName: 请求的文件名 | |
| :return: http response | |
| """ | |
| self.refreshTfsProxyList() | |
| headers = {"user-agent": "Picasso-Python-Client-V1.0.2"} | |
| Host = random.choice(self.tmpTfsProxyList) | |
| requestUrl = "http://" + Host + "/v1/" + self.appKey + "/" + tfsFileName | |
| # response = requests.get(requestUrl, headers=headers, timeout=timeout) | |
| request = urllib.request.Request(requestUrl, headers=headers) | |
| response = urllib.request.urlopen(request, timeout=timeout) | |
| return response | |
| def fetchMetadata(self, tfsFileName, timeout=None): | |
| """ | |
| 获取一个TFS文件的元信息 | |
| :param tfsFileName: 请求的文件名 | |
| :return: http response | |
| """ | |
| self.refreshTfsProxyList() | |
| headers = {"user-agent": "Picasso-Python-Client-V1.0.2"} | |
| Host = random.choice(self.tmpTfsProxyList) | |
| requestUrl = ( | |
| "http://" | |
| + Host | |
| + "/v1/" | |
| + self.appKey | |
| + "/" | |
| + "metadata" | |
| + "/" | |
| + tfsFileName | |
| ) | |
| response = requests.get(requestUrl, headers=headers, timeout=timeout) | |
| return response |