summaryrefslogtreecommitdiff
path: root/eventlet
diff options
context:
space:
mode:
Diffstat (limited to 'eventlet')
-rw-r--r--eventlet/green/select.py16
-rw-r--r--eventlet/hubs/kqueue.py11
2 files changed, 12 insertions, 15 deletions
diff --git a/eventlet/green/select.py b/eventlet/green/select.py
index 60301d3..f177502 100644
--- a/eventlet/green/select.py
+++ b/eventlet/green/select.py
@@ -1,8 +1,8 @@
-__select = __import__('select')
-error = __select.error
-from eventlet.greenthread import getcurrent
+import eventlet
from eventlet.hubs import get_hub
from eventlet.support import six
+__select = eventlet.patcher.original('select')
+error = __select.error
__patched__ = ['select']
@@ -36,7 +36,7 @@ def select(read_list, write_list, error_list, timeout=None):
raise TypeError("Expected number for timeout")
hub = get_hub()
timers = []
- current = getcurrent()
+ current = eventlet.getcurrent()
assert hub.greenlet is not current, 'do not call blocking functions from the mainloop'
ds = {}
for r in read_list:
@@ -56,10 +56,6 @@ def select(read_list, write_list, error_list, timeout=None):
original = ds[get_fileno(d)]['write']
current.switch(([], [original], []))
- def on_error(d, _err=None):
- original = ds[get_fileno(d)]['error']
- current.switch(([], [], [original]))
-
def on_timeout2():
current.switch(([], [], []))
@@ -77,9 +73,9 @@ def select(read_list, write_list, error_list, timeout=None):
try:
for k, v in six.iteritems(ds):
if v.get('read'):
- listeners.append(hub.add(hub.READ, k, on_read, on_error, lambda x: None))
+ listeners.append(hub.add(hub.READ, k, on_read, current.throw, lambda: None))
if v.get('write'):
- listeners.append(hub.add(hub.WRITE, k, on_write, on_error, lambda x: None))
+ listeners.append(hub.add(hub.WRITE, k, on_write, current.throw, lambda: None))
try:
return hub.switch()
finally:
diff --git a/eventlet/hubs/kqueue.py b/eventlet/hubs/kqueue.py
index 9487a16..05a961b 100644
--- a/eventlet/hubs/kqueue.py
+++ b/eventlet/hubs/kqueue.py
@@ -1,12 +1,11 @@
import os
import sys
-from eventlet import patcher
+from eventlet import patcher, support
from eventlet.support import six
select = patcher.original('select')
time = patcher.original('time')
sleep = time.sleep
-from eventlet.support import clear_sys_exc_info
from eventlet.hubs.hub import BaseHub, READ, WRITE, noop
@@ -73,9 +72,11 @@ class Hub(BaseHub):
evtype = listener.evtype
fileno = listener.fileno
if not self.listeners[evtype].get(fileno):
- event = self._events[fileno].pop(evtype)
+ event = self._events[fileno].pop(evtype, None)
+ if event is None:
+ return
try:
- self._delete_events([event])
+ self._delete_events((event,))
except OSError:
pass
@@ -111,4 +112,4 @@ class Hub(BaseHub):
raise
except:
self.squelch_exception(fileno, sys.exc_info())
- clear_sys_exc_info()
+ support.clear_sys_exc_info()