Browse Source

Python3 fixes. Closes #1107

Ask Solem 12 years ago
parent
commit
9c94c55376
6 changed files with 15 additions and 8 deletions
  1. 1 0
      celery/__compat__.py
  2. 3 2
      celery/app/base.py
  3. 5 1
      celery/local.py
  4. 2 1
      celery/utils/threads.py
  5. 3 3
      celery/worker/job.py
  6. 1 1
      requirements/default.txt

+ 1 - 0
celery/__compat__.py

@@ -14,6 +14,7 @@ from __future__ import absolute_import
 import operator
 import sys
 
+from functools import reduce
 from importlib import import_module
 from types import ModuleType
 

+ 3 - 2
celery/app/base.py

@@ -149,6 +149,7 @@ class Celery(object):
             return proxies_to_curapp(*args, **opts)
 
         def inner_create_task_cls(shared=True, filter=None, **opts):
+            _filt = filter  # stupid 2to3
 
             def _create_task_cls(fun):
                 if shared:
@@ -164,8 +165,8 @@ class Celery(object):
                 # return a proxy object that is only evaluated when first used
                 promise = PromiseProxy(self._task_from_fun, (fun, ), opts)
                 self._pending.append(promise)
-                if filter:
-                    return filter(promise)
+                if _filt:
+                    return _filt(promise)
                 return promise
 
             return _create_task_cls

+ 5 - 1
celery/local.py

@@ -15,6 +15,8 @@ from __future__ import absolute_import
 import importlib
 import sys
 
+PY3 = sys.version_info[0] == 3
+
 __module__ = __name__  # used by Proxy class body
 
 
@@ -129,7 +131,9 @@ class Proxy(object):
     """Proxy to another object."""
 
     # Code stolen from werkzeug.local.Proxy.
-    __slots__ = ('__local', '__args', '__kwargs', '__dict__', '__name__')
+    __slots__ = ('__local', '__args', '__kwargs', '__dict__')
+    if not PY3:
+        __slots__ += ('__name__', )
 
     def __init__(self, local, args=None, kwargs=None, name=None):
         object.__setattr__(self, '_Proxy__local', local)

+ 2 - 1
celery/utils/threads.py

@@ -17,9 +17,10 @@ from celery.local import Proxy
 from celery.utils.compat import THREAD_TIMEOUT_MAX
 
 USE_FAST_LOCALS = os.environ.get('USE_FAST_LOCALS')
+PY3 = sys.version_info[0] == 3
 
 _Thread = threading.Thread
-_Event = threading._Event
+_Event = threading.Event if PY3 else threading._Event
 active_count = (getattr(threading, 'active_count', None) or
                 threading.activeCount)
 

+ 3 - 3
celery/worker/job.py

@@ -75,9 +75,9 @@ class Request(object):
         __slots__ = (
             'app', 'name', 'id', 'args', 'kwargs', 'on_ack', 'delivery_info',
             'hostname', 'eventer', 'connection_errors', 'task', 'eta',
-            'expires', 'request_dict', 'acknowledged', 'success_msg',
-            'error_msg', 'retry_msg', 'ignore_msg', 'utc', 'time_start',
-            'worker_pid', '_already_revoked', '_terminate_on_ack',
+            'expires', 'request_dict', 'acknowledged',
+            'utc', 'time_start', 'worker_pid', '_already_revoked',
+            '_terminate_on_ack',
             '_tzlocal', '__weakref__',
         )
 

+ 1 - 1
requirements/default.txt

@@ -1,3 +1,3 @@
 billiard>=2.7.3.26,<3.0
-python-dateutil>=1.5,<2.0
+python-dateutil>=1.5
 kombu>=2.5.9,<3.0