Мое приложение выполняет много RPC. И получил некоторые ошибки разрешения DNS. Я обнаружил, что торнадо AsyncHttpClient не кэширует результаты DNS, и каждый раз вызывает socket.getaddrinfo.
Я нашел библиотеки, такие как https://github.com/jayvdb/dns-cache
и фрагменты, такие как
def _setDNSCache():
"""
Makes a cached version of socket._getaddrinfo to avoid subsequent DNS requests.
"""
def _getaddrinfo(*args, **kwargs):
if args in kb.cache:
return kb.cache[args]
else:
kb.cache[args] = socket._getaddrinfo(*args, **kwargs)
return kb.cache[args]
if not hasattr(socket, "_getaddrinfo"):
socket._getaddrinfo = socket.getaddrinfo
socket.getaddrinfo = _getaddrinfo
Стоит ли использовать библиотеку DNS-кэша прикладного уровня?