فهرست منبع

Adding support for the `BROKER_BACKEND_EXTRA_ARGS` configuration option, an optional dict() which can be used to pass connection arguments to alternative broker implementations (like `sqlakombu`).

Ryan Petrello 14 سال پیش
والد
کامیت
def7d5b966
2فایلهای تغییر یافته به همراه14 افزوده شده و 1 حذف شده
  1. 3 0
      celery/app/base.py
  2. 11 1
      celery/tests/test_app/test_app.py

+ 3 - 0
celery/app/base.py

@@ -153,6 +153,9 @@ class BaseApp(object):
             :setting:`BROKER_CONNECTION_TIMEOUT` setting.
         :keyword backend_cls: defaults to the :setting:`BROKER_BACKEND`
             setting.
+        :keyword backend_extra_args: A dict of additional connection arguments to pass to
+        alternate kombu channel implementations (useful for things like SQLAlchemy
+        engine arguments)            
 
         :returns :class:`kombu.connection.BrokerConnection`:
 

+ 11 - 1
celery/tests/test_app/test_app.py

@@ -93,7 +93,7 @@ class test_App(unittest.TestCase):
         self.assertTrue(self.app.conf.MOMENT_TO_STOP)
         self.assertEqual(self.app.conf.CALL_ME_BACK, 123456789)
         self.assertFalse(self.app.conf.WANT_ME_TO)
-        self.assertTrue(self.app.conf.UNDERSTAND_ME)
+        self.assertTrue(self.app.conf.UNDERSTAND_ME)        
 
     def test_config_from_cmdline(self):
         cmdline = [".always_eager=no",
@@ -118,6 +118,16 @@ class test_App(unittest.TestCase):
 
         self.app.config_from_object(Object(CELERY_BACKEND="set_by_us"))
         self.assertEqual(self.app.conf.CELERY_RESULT_BACKEND, "set_by_us")
+        
+    def test_setting_BROKER_BACKEND_EXTRA_ARGS(self):
+
+        _args = {'foo': 'bar', 'spam': 'baz'}
+
+        self.app.config_from_object(Object())
+        self.assertEqual(self.app.conf.BROKER_BACKEND_EXTRA_ARGS, {})
+
+        self.app.config_from_object(Object(BROKER_BACKEND_EXTRA_ARGS=_args))
+        self.assertEqual(self.app.conf.BROKER_BACKEND_EXTRA_ARGS, _args)        
 
     def test_Windows_log_color_disabled(self):
         self.app.IS_WINDOWS = True