python之gevent模拟minio文件上传/下载高并发
import gevent from gevent import monkey monkey.patch_all() from minio import Minio import time, random import uuid def get_client(): """ 连接minio :return: """ client = Minio(endpoint="xxx.xxx.xxx.xxx:9001", access_key='xxxx', secret_key='xxxxx', secure=False # 使用http ) return client def upload_file(client, t, f): """ 上传文件 :param client: :param t:运行时长,单位s :param f:每秒上传频率 :return: """ file_name = '19d5c50e833d4fa8af3b7412d40000a2.jpg' file_path = r'E:\集成资料\视频素材' barrel = "testdata" for i in range(t): client.fput_object(bucket_name=barrel, object_name="data1/" + str(uuid.uuid1()) + ".jpg", file_path=file_path + "/" + file_name) time.sleep(1/f) stop_time = time.strftime("%y-%m-%d: %H:%M:%S", time.localtime()) print(stop_time) def download_file(client, t, f): """ 下载文件 :param t:运行时长,单位s :param f:每秒上传频率 :return: """ file_path = r'E:/集成资料/测试项目/minio/' barrel = "testdata" files = client.list_objects(barrel, prefix="data1/") for i in range(1, t): file = random.choice(files) client.fget_object(bucket_name=barrel, object_name=file.object_name, file_path=file_path + str(file.object_name)) time.sleep(1/f) stop_time = time.strftime("%y-%m-%d: %H:%M:%S", time.localtime()) print(stop_time) def run_gevent_upload(num, t, f): """ 调用gevent模拟并发上传 :param num: :param t:运行时长,单位s :param f:每秒上传频率 :return: """ start_time = time.time() run_list = list() for i in range(num): run_list.append(gevent.spawn(upload_file(get_client(), t, f))) gevent.joinall(run_list) stop_time = time.time() print("执行总时长:", stop_time-start_time) def run_gevent_download(num, t, f): """ 调用gevent模拟并发下载 :param num: :param t:运行时长,单位s :param f:每秒上传频率 :return: """ start_time = time.time() run_list = list() for i in range(num): run_list.append(gevent.spawn(download_file(get_client(), t, f))) gevent.joinall(run_list) stop_time = time.time() print("执行总时长:", stop_time - start_time) if __name__ == '__main__': num = 5 t = 10 f = 2 run_gevent_upload(num, t, f)
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)