实现每隔一秒发起请求且不需要等待前一个请求响应的方法
import aiohttp
import asyncio
import time
from tqdm import tqdm
# 这里是修改后的fetch函数
async def fetch(session, delay):
await asyncio.sleep(delay)
start_time = time.time()
start_time_struct = time.localtime()
start_time_str = time.strftime("%Y-%m-%d %H:%M:%S", start_time_struct)
print(start_time_str)
async with session.post('http://localhost:11436/chat/completions') as response:
await response.text() # 等待响应完成
end_time = time.time()
request_time = end_time - start_time
return request_time
async def run(total_requests):
async with aiohttp.ClientSession() as session:
tasks = []
pbar = tqdm(total=total_requests)
for i in range(total_requests):
task = asyncio.create_task(fetch(session, i + 1)) # 每个任务延迟时间递增
tasks.append(task)
pbar.update(1)
results = await asyncio.gather(*tasks)
pbar.close()
return results
if __name__ == '__main__':
import sys
if len(sys.argv)!= 2:
print("Usage: python client_test.py <N>")
sys.exit(1)
N = int(sys.argv[1])
start_time = time.time()
response_times = asyncio.run(run(N))
end_time = time.time()
total_time = end_time - start_time
avg_time_per_request = sum(response_times) / len(response_times)
print(f'Performance Results:')
print(f' Total requests : {N}')
print(f' Total time : {total_time:.2f} seconds')
print(f' Average time per request : {avg_time_per_request:.2f} seconds')