aboutsummaryrefslogtreecommitdiffstats
path: root/python/gevent/resolver/blocking.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/gevent/resolver/blocking.py')
-rw-r--r--python/gevent/resolver/blocking.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/python/gevent/resolver/blocking.py b/python/gevent/resolver/blocking.py
new file mode 100644
index 0000000..84cbd9c
--- /dev/null
+++ b/python/gevent/resolver/blocking.py
@@ -0,0 +1,41 @@
+# Copyright (c) 2018 gevent contributors. See LICENSE for details.
+
+import _socket
+
+class Resolver(object):
+ """
+ A resolver that directly uses the system's resolver functions.
+
+ .. caution::
+
+ This resolver is *not* cooperative.
+
+ This resolver has the lowest overhead of any resolver and
+ typically approaches the speed of the unmodified :mod:`socket`
+ functions. However, it is not cooperative, so if name resolution
+ blocks, the entire thread and all its greenlets will be blocked.
+
+ This can be useful during debugging, or it may be a good choice if
+ your operating system provides a good caching resolver (such as
+ macOS's Directory Services) that is usually very fast and
+ functionally non-blocking.
+
+ .. versionchanged:: 1.3a2
+ This was previously undocumented and existed in :mod:`gevent.socket`.
+
+ """
+
+ def __init__(self, hub=None):
+ pass
+
+ def close(self):
+ pass
+
+ for method in (
+ 'gethostbyname',
+ 'gethostbyname_ex',
+ 'getaddrinfo',
+ 'gethostbyaddr',
+ 'getnameinfo'
+ ):
+ locals()[method] = staticmethod(getattr(_socket, method))