@@ -102,15 +102,18 @@ def scrape_urls(self, urls):
102102
103103 def apply_async (self , * args , ** kwargs ):
104104 headers = kwargs .setdefault ("headers" , {})
105- headers ["taskbadger_track" ] = True
106105 tb_kwargs = self ._get_tb_kwargs (kwargs )
107106 if kwargs .get ("kwargs" ):
108107 # extract taskbadger options from task kwargs when supplied as keyword argument
109108 tb_kwargs .update (self ._get_tb_kwargs (kwargs ["kwargs" ]))
110109 elif len (args ) > 1 and isinstance (args [1 ], dict ):
111110 # extract taskbadger options from task kwargs when supplied as positional argument
112111 tb_kwargs .update (self ._get_tb_kwargs (args [1 ]))
113- headers [TB_KWARGS_ARG ] = tb_kwargs
112+
113+ if Badger .is_configured ():
114+ headers ["taskbadger_track" ] = True
115+ headers [TB_KWARGS_ARG ] = tb_kwargs
116+
114117 result = super ().apply_async (* args , ** kwargs )
115118
116119 tb_task_id = result .info .get (TB_TASK_ID ) if result .info else None
@@ -150,13 +153,13 @@ def taskbadger_task(self):
150153@before_task_publish .connect
151154def task_publish_handler (sender = None , headers = None , body = None , ** kwargs ):
152155 headers = headers if "task" in headers else body
156+ header_kwargs = headers .pop (TB_KWARGS_ARG , {}) # always remove TB headers
153157 if sender .startswith ("celery." ) or not Badger .is_configured ():
154158 return
155159
156160 celery_system = Badger .current .settings .get_system_by_id ("celery" )
157161 auto_track = celery_system and celery_system .track_task (sender )
158162 manual_track = headers .get ("taskbadger_track" )
159- header_kwargs = headers .pop (TB_KWARGS_ARG , {})
160163 if not manual_track and not auto_track :
161164 return
162165
0 commit comments