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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.