|  | @@ -27,7 +27,7 @@ from kombu.clocks import LamportClock
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from .. import datastructures
 | 
	
		
			
				|  |  |  from .. import platforms
 | 
	
		
			
				|  |  | -from ..backends import get_backend_cls
 | 
	
		
			
				|  |  | +from ..backends import get_backend_by_url
 | 
	
		
			
				|  |  |  from ..exceptions import AlwaysEagerIgnored
 | 
	
		
			
				|  |  |  from ..loaders import get_loader_cls
 | 
	
		
			
				|  |  |  from ..local import maybe_evaluate
 | 
	
	
		
			
				|  | @@ -116,7 +116,7 @@ class BaseApp(object):
 | 
	
		
			
				|  |  |      def __init__(self, main=None, loader=None, backend=None,
 | 
	
		
			
				|  |  |              amqp=None, events=None, log=None, control=None,
 | 
	
		
			
				|  |  |              set_as_current=True, accept_magic_kwargs=False,
 | 
	
		
			
				|  |  | -            tasks=None, **kwargs):
 | 
	
		
			
				|  |  | +            tasks=None, broker=None, **kwargs):
 | 
	
		
			
				|  |  |          self.clock = LamportClock()
 | 
	
		
			
				|  |  |          self.main = main
 | 
	
		
			
				|  |  |          self.amqp_cls = amqp or self.amqp_cls
 | 
	
	
		
			
				|  | @@ -133,6 +133,12 @@ class BaseApp(object):
 | 
	
		
			
				|  |  |          self._pending = deque()
 | 
	
		
			
				|  |  |          self._tasks = instantiate(self.registry_cls)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        # these options are moved to the config to
 | 
	
		
			
				|  |  | +        # simplify pickling of the app object.
 | 
	
		
			
				|  |  | +        self._preconf = {}
 | 
	
		
			
				|  |  | +        if broker:
 | 
	
		
			
				|  |  | +            self._preconf["BROKER_URL"] = broker
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          self.on_init()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def on_init(self):
 | 
	
	
		
			
				|  | @@ -303,6 +309,7 @@ class BaseApp(object):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def prepare_config(self, c):
 | 
	
		
			
				|  |  |          """Prepare configuration before it is merged with the defaults."""
 | 
	
		
			
				|  |  | +        c.update(self._preconf)
 | 
	
		
			
				|  |  |          return find_deprecated_settings(c)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def now(self):
 | 
	
	
		
			
				|  | @@ -332,9 +339,10 @@ class BaseApp(object):
 | 
	
		
			
				|  |  |          return first(None, values) or self.conf.get(default_key)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _get_backend(self):
 | 
	
		
			
				|  |  | -        return get_backend_cls(
 | 
	
		
			
				|  |  | -                    self.backend_cls or self.conf.CELERY_RESULT_BACKEND,
 | 
	
		
			
				|  |  | -                    loader=self.loader)(app=self)
 | 
	
		
			
				|  |  | +        backend, url = get_backend_by_url(
 | 
	
		
			
				|  |  | +                self.backend_cls or self.conf.CELERY_RESULT_BACKEND,
 | 
	
		
			
				|  |  | +                self.loader)
 | 
	
		
			
				|  |  | +        return backend(app=self, url=url)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _get_config(self):
 | 
	
		
			
				|  |  |          return Settings({}, [self.prepare_config(self.loader.conf),
 |