1. import requests
  2. import time
  3. import logging
  4. # Configure logging
  5. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
  6. def measure_http_performance(url, num_requests=10, timeout=5):
  7. """
  8. Measures the performance of HTTP responses for a given URL.
  9. Args:
  10. url (str): The URL to test.
  11. num_requests (int): The number of requests to make.
  12. timeout (int): Timeout in seconds for each request.
  13. Returns:
  14. dict: A dictionary containing the average response time,
  15. minimum response time, maximum response time, and
  16. success rate. Returns None if an error occurs.
  17. """
  18. response_times = []
  19. success_count = 0
  20. for i in range(num_requests):
  21. try:
  22. start_time = time.time()
  23. response = requests.get(url, timeout=timeout)
  24. end_time = time.time()
  25. response_time = end_time - start_time
  26. response_times.append(response_time)
  27. if response.status_code >= 200 and response.status_code < 300:
  28. success_count += 1
  29. logging.info(f"Request {i+1}: Success - Status Code: {response.status_code}, Response Time: {response_time:.4f}s")
  30. else:
  31. logging.warning(f"Request {i+1}: Failed - Status Code: {response.status_code}, Response Time: {response_time:.4f}s")
  32. except requests.exceptions.RequestException as e:
  33. logging.error(f"Request {i+1}: Error - {e}")
  34. return None
  35. if not response_times:
  36. return None
  37. avg_response_time = sum(response_times) / len(response_times)
  38. min_response_time = min(response_times)
  39. max_response_time = max(response_times)
  40. success_rate = (success_count / num_requests) * 100
  41. results = {
  42. "average_response_time": avg_response_time,
  43. "min_response_time": min_response_time,
  44. "max_response_time": max_response_time,
  45. "success_rate": success_rate
  46. }
  47. logging.info(f"Performance Results: {results}")
  48. return results
  49. if __name__ == '__main__':
  50. # Example usage
  51. target_url = "https://www.google.com" # Replace with your target URL
  52. performance_data = measure_http_performance(target_url, num_requests=20)
  53. if performance_data:
  54. print("Performance Test Complete.")
  55. print(performance_data)
  56. else:
  57. print("Performance Test Failed.")

Add your comment