# -*- coding: utf-8 -*- from petrel_client.client import Client from multiprocessing import Process import logging import random LOG = logging.getLogger('petrel_client.test') def f(conf_path, repeat): client = Client(conf_path) total_bytes = 0 for itr in range(repeat): urls = [ 'cluster1:s3://my-bucket/object.1', # 从 cluster1 中读取 'cluster2:s3://my-bucket/object.2', # 从 cluster2 中读取 's3://my-bucket/object.3', # 若不指定 cluster,则从配置文件中指定的 default_cluster 中读取 'file://tmp/xxx', # 从 DFS 中读取 '/tmp/xxx', # 若不包含 's3:' 或 'file:',从 DFS 中读取 ] url = random.choice(urls) body = client.get(url) if not body: LOG.warn('can not get content from %s', url) else: total_bytes += len(body) LOG.debug('total_bytes: %s', total_bytes) conf_path = '~/petreloss.conf' repeat = 5000 parallelism = 4 process_list = [Process(target=f, args=(conf_path, repeat)) for _ in range(parallelism)] [p.start() for p in process_list] [p.join() for p in process_list]