1. import requests
  2. import sys
  3. def flush_api_output(endpoint, params=None, method='GET'):
  4. """
  5. Flushes output from an API endpoint with limited memory usage.
  6. Args:
  7. endpoint (str): The API endpoint URL.
  8. params (dict, optional): Query parameters. Defaults to None.
  9. method (str, optional): HTTP method (GET, POST, etc.). Defaults to 'GET'.
  10. """
  11. try:
  12. response = requests.request(method, endpoint, params=params, stream=True) # stream=True for memory efficiency
  13. response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
  14. for line in response.iter_lines(): # Iterate over lines instead of reading the whole content
  15. if line: # Avoid printing empty lines
  16. sys.stdout.write(line.decode('utf-8')) #Decode bytes to string
  17. except requests.exceptions.RequestException as e:
  18. print(f"API request failed: {e}", file=sys.stderr) # Print errors to stderr
  19. except Exception as e:
  20. print(f"An unexpected error occurred: {e}", file=sys.stderr)

Add your comment