1. import requests
  2. def safe_http_request(url, method='GET', data=None, headers=None, timeout=5):
  3. """
  4. Makes an HTTP request with graceful fallback for errors.
  5. Args:
  6. url (str): The URL to request.
  7. method (str): The HTTP method (GET, POST, etc.). Defaults to GET.
  8. data (dict or str): The data to send with the request (for POST, etc.). Defaults to None.
  9. headers (dict): The headers to include in the request. Defaults to None.
  10. timeout (int): Timeout in seconds. Defaults to 5.
  11. Returns:
  12. requests.Response or None: The response object if successful, None otherwise.
  13. """
  14. try:
  15. response = requests.request(method, url, data=data, headers=headers, timeout=timeout)
  16. response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
  17. return response
  18. except requests.exceptions.RequestException as e:
  19. print(f"HTTP request failed: {e}")
  20. return None
  21. if __name__ == '__main__':
  22. # Example Usage:
  23. url = "https://httpstat.us/500" # Simulates a server error
  24. response = safe_http_request(url)
  25. if response:
  26. print("Request successful!")
  27. print(response.status_code)
  28. #print(response.text) # Uncomment to print response content
  29. else:
  30. print("Request failed.")

Add your comment