diff options
Diffstat (limited to 'eventlet')
| -rw-r--r-- | eventlet/green/selectors.py | 20 | ||||
| -rw-r--r-- | eventlet/patcher.py | 8 |
2 files changed, 27 insertions, 1 deletions
diff --git a/eventlet/green/selectors.py b/eventlet/green/selectors.py index 26427ec..9d482fe 100644 --- a/eventlet/green/selectors.py +++ b/eventlet/green/selectors.py @@ -3,9 +3,29 @@ import sys from eventlet import patcher from eventlet.green import select +__patched__ = [ + 'SelectSelector', + 'PollSelector', + 'EpollSelector', + 'DevpollSelector', + 'KqueueSelector', +] + patcher.inject('selectors', globals(), ('select', select)) del patcher if sys.platform != 'win32': SelectSelector._select = staticmethod(select.select) + + +# We only have green select so the options are: +# * leave it be and have selectors that block +# * try to pretend the "bad" selectors don't exist +# * replace all with SelectSelector for the price of possibly different +# performance characteristic and missing fileno() method (if someone +# uses it it'll result in a crash, we may want to implement it in the future) +PollSelector = SelectSelector +EpollSelector = SelectSelector +DevpollSelector = SelectSelector +KqueueSelector = SelectSelector diff --git a/eventlet/patcher.py b/eventlet/patcher.py index eb09f9a..40207f9 100644 --- a/eventlet/patcher.py +++ b/eventlet/patcher.py @@ -331,7 +331,13 @@ def _green_os_modules(): def _green_select_modules(): from eventlet.green import select - return [('select', select)] + modules = [('select', select)] + + if sys.version_info >= (3, 4): + from eventlet.green import selectors + modules.append(('selectors', selectors)) + + return modules def _green_socket_modules(): |
