Ask Solem 14 лет назад
Родитель
Сommit
d0ed2d4ca2

+ 1 - 19
celery/tests/test_bin/test_celeryev.py

@@ -1,12 +1,11 @@
 import sys
 
-from importlib import import_module
-
 from celery.app import app_or_default
 from celery.bin import celeryev
 from celery.utils.functional import wraps
 
 from celery.tests.utils import unittest
+from celery.tests.utils import patch
 
 
 class MockCommand(object):
@@ -16,23 +15,6 @@ class MockCommand(object):
         self.executed.append(True)
 
 
-def patch(module, name, mocked):
-    module = import_module(module)
-
-    def _patch(fun):
-
-        @wraps(fun)
-        def __patched(*args, **kwargs):
-            prev = getattr(module, name)
-            setattr(module, name, mocked)
-            try:
-                return fun(*args, **kwargs)
-            finally:
-                setattr(module, name, prev)
-        return __patched
-    return _patch
-
-
 def proctitle(prog, info=None):
     proctitle.last = (prog, info)
 proctitle.last = ()

+ 37 - 0
celery/tests/test_concurrency_evlet.py

@@ -0,0 +1,37 @@
+import os
+import sys
+
+from celery.tests.utils import unittest
+from celery.tests.utils import patch
+
+
+monkey_patched = []
+
+
+class EventletCase(unittest.TestCase):
+
+    def setUp(self):
+        try:
+            __import__("eventlet")
+        except ImportError:
+            raise SkipTest(
+                "eventlet not installed, skipping related tests.")
+
+
+
+class test_eventlet_patch(EventletCase):
+
+    def setUp(self):
+        EventletCase.setUp(self)
+
+    @patch("eventlet", "monkey_patch", lambda: monkey_patched.append(True))
+    def test_is_patches(self):
+        prev_evlet = sys.modules.pop("celery.concurrency.evlet", None)
+        os.environ.pop("EVENTLET_NOPATCH")
+        try:
+            from celery.concurrency import evlet
+            self.assertTrue(evlet)
+            self.assertTrue(monkey_patched)
+        finally:
+            sys.modules["celery.concurrency.evlet"] = prev_evlet
+            os.environ["EVENTLET_NOPATCH"] = "yes"

+ 20 - 0
celery/tests/utils.py

@@ -6,6 +6,7 @@ try:
 except AttributeError:
     import unittest2 as unittest
 
+import importlib
 import os
 import sys
 import time
@@ -243,3 +244,22 @@ def override_stdouts():
 
     sys.stdout = sys.__stdout__ = prev_out
     sys.stderr = sys.__stderr__ = prev_err
+
+
+def patch(module, name, mocked):
+    module = importlib.import_module(module)
+
+    def _patch(fun):
+
+        @wraps(fun)
+        def __patched(*args, **kwargs):
+            prev = getattr(module, name)
+            setattr(module, name, mocked)
+            try:
+                return fun(*args, **kwargs)
+            finally:
+                setattr(module, name, prev)
+        return __patched
+    return _patch
+
+

+ 3 - 0
contrib/release/doc4allmods

@@ -6,6 +6,9 @@ SKIP_FILES="celery.bin.rst
             celery.bin.celeryd_detach.rst
             celery.contrib.rst
             celery.contrib.batches.rst
+            celery.control.rst
+            celery.control.builtins.rst
+            celery.control.registry.rst
             celery.task.schedules.rst
             celery.models.rst
             celery.app.base.rst

+ 0 - 7
docs/internals/reference/celery.datastructures.rst

@@ -35,13 +35,6 @@
         :members:
         :undoc-members:
 
-    PositionQueue
-    -------------
-
-    .. autoclass:: PositionQueue
-        :members:
-        :undoc-members:
-
     ExceptionInfo
     -------------
 

+ 11 - 0
docs/internals/reference/celery.worker.autoscale.rst

@@ -0,0 +1,11 @@
+========================================
+ celery.worker.autoscale
+========================================
+
+.. contents::
+    :local:
+.. currentmodule:: celery.worker.autoscale
+
+.. automodule:: celery.worker.autoscale
+    :members:
+    :undoc-members:

+ 1 - 0
docs/internals/reference/index.rst

@@ -15,6 +15,7 @@
     celery.worker.buckets
     celery.worker.heartbeat
     celery.worker.state
+    celery.worker.autoscale
     celery.concurrency
     celery.concurrency.processes
     celery.concurrency.processes.pool

+ 5 - 1
docs/reference/celery.app.amqp.rst

@@ -20,11 +20,15 @@
             The task consumer class used.
             Default is :class:`kombu.compat.Consumer`.
 
+        .. attribute:: ConsumerSet
+
+            The class used to consume from multiple queues using the
+            same channel.
+
         .. attribute:: queues
 
             All currently defined task queues. (A :class:`Queues` instance).
 
-        .. automethod:: ConsumerSet
         .. automethod:: Queues
         .. automethod:: Router
         .. automethod:: TaskConsumer