1. import urllib.parse
  2. import time
  3. import logging
  4. # Configure logging
  5. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
  6. def decode_url_list(url_list, task_duration=60):
  7. """
  8. Decodes a list of URLs for short-lived tasks with verbose logging.
  9. Args:
  10. url_list (list): A list of URLs to decode.
  11. task_duration (int): Duration of the task in seconds.
  12. Returns:
  13. list: A list of decoded URLs. Returns an empty list if an error occurs.
  14. """
  15. decoded_urls = []
  16. start_time = time.time()
  17. for url in url_list:
  18. try:
  19. # Decode the URL
  20. parsed_url = urllib.parse.urlparse(url)
  21. decoded_url = parsed_url.geturl()
  22. decoded_urls.append(decoded_url)
  23. logging.info(f"Successfully decoded: {url} -> {decoded_url}")
  24. except Exception as e:
  25. logging.error(f"Error decoding URL {url}: {e}")
  26. end_time = time.time()
  27. logging.info(f"URL decoding completed in {end_time - start_time:.2f} seconds.")
  28. return decoded_urls
  29. if __name__ == '__main__':
  30. # Example usage
  31. url_list = [
  32. "https://www.example.com/path?query=value1&another=value2",
  33. "http://subdomain.example.org/resource",
  34. "ftp://ftp.example.net/file.txt"
  35. ]
  36. decoded_urls = decode_url_list(url_list)
  37. print(decoded_urls)

Add your comment