python3 compat fixes; Thanks to Astrum Kuo

https://github.com/eventlet/eventlet/pull/82

Celery could work with eventlet in Python3 now
This commit is contained in:
郭旭星Astrum Kuo
2014-04-01 17:51:44 +08:00
committed by Sergey Shepelev
parent 983d478eaf
commit 5399fbda9d
5 changed files with 12 additions and 8 deletions

View File

@@ -93,3 +93,4 @@ Thanks To
* David Goetz, wsgi: Allow minimum_chunk_size to be overriden on a per request basis
* Dmitry Orlov, websocket: accept Upgrade: websocket (lowercase)
* Zhang Hua, profile: accumulate results between runs (Bitbucket #162)
* Astrum Kuo, python3 compatibility fixes

View File

@@ -74,7 +74,7 @@ def select(read_list, write_list, error_list, timeout=None):
if timeout is not None:
timers.append(hub.schedule_call_global(timeout, on_timeout))
try:
for k, v in ds.iteritems():
for k, v in six.iteritems(ds):
if v.get('read'):
listeners.append(hub.add(hub.READ, k, on_read))
if v.get('write'):

View File

@@ -1,5 +1,5 @@
"""Implements the standard thread module, using greenthreads."""
__thread = __import__('thread')
from eventlet.support.six.moves import _thread as __thread
from eventlet.support import greenlets as greenlet
from eventlet import greenthread
from eventlet.semaphore import Semaphore as LockType

View File

@@ -1,6 +1,7 @@
import os
import sys
from eventlet import patcher
from eventlet.support import six
select = patcher.original('select')
time = patcher.original('time')
sleep = time.sleep
@@ -33,8 +34,8 @@ class Hub(BaseHub):
self.kqueue.close()
self._init_kqueue()
kqueue = self.kqueue
events = [e for i in self._events.itervalues()
for e in i.itervalues()]
events = [e for i in six.itervalues(self._events)
for e in six.itervalues(i)]
kqueue.control(events, 0, 0)
def _control(self, events, max_events, timeout):
@@ -62,8 +63,8 @@ class Hub(BaseHub):
return listener
def _delete_events(self, events):
del_events = map(lambda e: select.kevent(e.ident, e.filter,
select.KQ_EV_DELETE), events)
del_events = [select.kevent(e.ident, e.filter, select.KQ_EV_DELETE)
for e in events]
self._control(del_events, 0, 0)
def remove(self, listener):

View File

@@ -217,7 +217,7 @@ def monkey_patch(**on):
accepted_args = set(('os', 'select', 'socket',
'thread', 'time', 'psycopg', 'MySQLdb'))
default_on = on.pop("all",None)
for k in on.iterkeys():
for k in six.iterkeys(on):
if k not in accepted_args:
raise TypeError("monkey_patch() got an unexpected "\
"keyword argument %r" % k)
@@ -344,4 +344,6 @@ if __name__ == "__main__":
import sys
sys.argv.pop(0)
monkey_patch()
execfile(sys.argv[0])
with open(sys.argv[0]) as f:
code = compile(f.read(), sys.argv[0], 'exec')
exec(code)