Python 파충류 DNS 해석 캐 시 방법 실례 분석

1854 단어 Python파충DNS
이 글 의 실례 는 Python 파충류 DNS 해석 캐 시 방법 을 다 루 었 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
선언:
이것 은 Python 파충류 중 DNS 해석 캐 시 모듈 의 핵심 코드 로 작년 코드 입 니 다.이제 관심 있 는 것 을 풀 어 보 세 요.
일반적으로 도 메 인 이름 의 DNS 해석 시간 은 10~60 밀리초 사이 로 보 잘 것 없 지만 대형 파충류 에 게 는 무시 할 수 없다.예 를 들 어 우 리 는 시 나 웨 이 보 를 오 르 려 고 한다.같은 도 메 인 이름 의 요청 이 1 천만(이것 은 이미 많은 것 이 아니다)이 라면 10~60 만 초 사이 에 하루 에 86400 초 를 소모 한다.즉,단일 DNS 로 이 항목 을 해석 하 는 데 며칠 이 걸 렸 는데 이때 DNS 해석 캐 시 를 더 하면 효과 가 뚜렷 해진 다.
아래 에 코드 를 직접 놓 으 면 뒤에 있 음 을 설명 합 니 다.
코드:

# encoding=utf-8
# ---------------------------------------
#    :0.1
#    :2016-04-26
#    :  <[email protected]>
#      :Win64 + Python 2.7
# ---------------------------------------
import socket
# from gevent import socket
_dnscache = {}
def _setDNSCache():
  """ DNS   """
  def _getaddrinfo(*args, **kwargs):
    if args in _dnscache:
      # print str(args) + " in cache"
      return _dnscache[args]
    else:
      # print str(args) + " not in cache"
      _dnscache[args] = socket._getaddrinfo(*args, **kwargs)
      return _dnscache[args]
  if not hasattr(socket, '_getaddrinfo'):
    socket._getaddrinfo = socket.getaddrinfo
    socket.getaddrinfo = _getaddrinfo

설명:
사실 어렵 지 않 습 니 다.socket 에 있 는 캐 시 를 저장 하여 중복 가 져 오지 않도록 하 는 것 입 니 다.
위의 코드 를 dns 에 놓 을 수 있 습 니 다.cache.py 파일 에서 파충류 프레임 에 이_setDNSCache()방법 을 호출 하면 됩 니 다.
설명 이 필요 한 것 은 gevent 협 정 을 사용 하고monkey.patch_all()를 사용 했다 면 파충류 가 gevent 안의 socket 으로 바 뀌 었 음 을 주의해 야 합 니 다.DNS 해석 캐 시 모듈 도 gevent 의 socket 을 사용 해 야 합 니 다.
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기