From e4c8ce394cdd5d1c6b71f88d4947e899d32e70f3 Mon Sep 17 00:00:00 2001 From: Shane Harvey Date: Wed, 28 Apr 2021 12:32:05 -0700 Subject: [PATCH] PYTHON-2667 Fix SRV support when running with eventlet --- pymongo/srv_resolver.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pymongo/srv_resolver.py b/pymongo/srv_resolver.py index 45a4f66611..42be08a4d3 100644 --- a/pymongo/srv_resolver.py +++ b/pymongo/srv_resolver.py @@ -16,13 +16,6 @@ try: from dns import resolver - - try: - # dnspython >= 2 - from dns.resolver import resolve as _resolve - except ImportError: - # dnspython 1.X - from dns.resolver import query as _resolve _HAVE_DNSPYTHON = True except ImportError: _HAVE_DNSPYTHON = False @@ -39,6 +32,15 @@ def maybe_decode(text): return text +# PYTHON-2667 Lazily call dns.resolver methods for compatibility with eventlet. +def _resolve(*args, **kwargs): + if hasattr(resolver, 'resolve'): + # dnspython >= 2 + return resolver.resolve(*args, **kwargs) + # dnspython 1.X + return resolver.query(*args, **kwargs) + + class _SrvResolver(object): def __init__(self, fqdn, connect_timeout=None): self.__fqdn = fqdn