m2m模型翻译
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.7 KiB

6 months ago
  1. # SPDX-FileCopyrightText: 2015 Eric Larson
  2. #
  3. # SPDX-License-Identifier: Apache-2.0
  4. from __future__ import annotations
  5. import logging
  6. from argparse import ArgumentParser
  7. from typing import TYPE_CHECKING
  8. from pip._vendor import requests
  9. from pip._vendor.cachecontrol.adapter import CacheControlAdapter
  10. from pip._vendor.cachecontrol.cache import DictCache
  11. from pip._vendor.cachecontrol.controller import logger
  12. if TYPE_CHECKING:
  13. from argparse import Namespace
  14. from pip._vendor.cachecontrol.controller import CacheController
  15. def setup_logging() -> None:
  16. logger.setLevel(logging.DEBUG)
  17. handler = logging.StreamHandler()
  18. logger.addHandler(handler)
  19. def get_session() -> requests.Session:
  20. adapter = CacheControlAdapter(
  21. DictCache(), cache_etags=True, serializer=None, heuristic=None
  22. )
  23. sess = requests.Session()
  24. sess.mount("http://", adapter)
  25. sess.mount("https://", adapter)
  26. sess.cache_controller = adapter.controller # type: ignore[attr-defined]
  27. return sess
  28. def get_args() -> Namespace:
  29. parser = ArgumentParser()
  30. parser.add_argument("url", help="The URL to try and cache")
  31. return parser.parse_args()
  32. def main() -> None:
  33. args = get_args()
  34. sess = get_session()
  35. # Make a request to get a response
  36. resp = sess.get(args.url)
  37. # Turn on logging
  38. setup_logging()
  39. # try setting the cache
  40. cache_controller: CacheController = (
  41. sess.cache_controller # type: ignore[attr-defined]
  42. )
  43. cache_controller.cache_response(resp.request, resp.raw)
  44. # Now try to get it
  45. if cache_controller.cached_request(resp.request):
  46. print("Cached!")
  47. else:
  48. print("Not cached :(")
  49. if __name__ == "__main__":
  50. main()