Selaa lähdekoodia

cached_property: Ignore keyerrors from del()

Ask Solem 14 vuotta sitten
vanhempi
commit
05cbe1a5e3
3 muutettua tiedostoa jossa 12 lisäystä ja 5 poistoa
  1. 5 0
      celery/app/base.py
  2. 7 3
      celery/utils/__init__.py
  3. 0 2
      celery/worker/autoscale.py

+ 5 - 0
celery/app/base.py

@@ -316,5 +316,10 @@ class BaseApp(object):
 
     @cached_property
     def events(self):
+        """Sending/receiving events.
+
+        See :class:`~celery.events.Events`.
+
+        """
         from celery.events import Events
         return Events(app=self)

+ 7 - 3
celery/utils/__init__.py

@@ -396,9 +396,13 @@ class cached_property(object):
     def __delete__(self, obj):
         if not obj:
             return self
-        if self.__del is not None:
-            self.__del(obj)
-        del(obj.__dict__[self.__name__])
+        try:
+            del(obj.__dict__[self.__name__])
+        except KeyError:
+            pass
+        else:
+            if self.__del is not None:
+                self.__del(obj)
 
     def setter(self, fset):
         return self.__class__(self.__get, fset, self.__del)

+ 0 - 2
celery/worker/autoscale.py

@@ -68,5 +68,3 @@ class Autoscaler(threading.Thread):
     @property
     def processes(self):
         return self.pool._pool._processes
-
-