@@ -106,12 +106,24 @@ async def shadow_factory(self) -> list:
106
106
"""
107
107
if self .shadows is None :
108
108
raise TypeError ('shadows not defined on worker' )
109
- rp = await self .get_redis_pool ()
110
- shadows = [s (redis_settings = self .redis_settings , is_shadow = True , loop = self .loop , existing_pool = rp )
111
- for s in self .shadows ]
109
+ kwargs = await self .shadow_kwargs ()
110
+ shadows = [s (** kwargs ) for s in self .shadows ]
112
111
await asyncio .gather (* [s .startup () for s in shadows ], loop = self .loop )
113
112
return shadows
114
113
114
+ async def shadow_kwargs (self ):
115
+ """
116
+ Prepare the keyword arguments for initialising all shadows.
117
+
118
+ Override to customise the kwargs used to initialise shadows.
119
+ """
120
+ return dict (
121
+ redis_settings = self .redis_settings ,
122
+ is_shadow = True ,
123
+ loop = self .loop ,
124
+ existing_pool = await self .get_redis_pool (),
125
+ )
126
+
115
127
@classmethod
116
128
def logging_config (cls , verbose ) -> dict :
117
129
"""
@@ -415,7 +427,7 @@ def start_worker(worker_path: str, worker_class: str, burst: bool, loop: asyncio
415
427
"""
416
428
worker_cls = import_string (worker_path , worker_class )
417
429
worker = worker_cls (burst = burst , loop = loop )
418
- work_logger .info ('Starting %s on worker process pid=%d' , worker_cls .__name__ , os .getpid ())
430
+ work_logger .info ('Starting "%s" on pid=%d' , worker_cls .__name__ , os .getpid ())
419
431
try :
420
432
worker .run_until_complete ()
421
433
except HandledExit :
0 commit comments