@@ -27,22 +27,33 @@ def _auto_task_wrapper(module_name, class_name, func_name, *args, **kwargs):
2727 getattr (instance , func_name )(* args , ** kwargs ) # invoke method on instance
2828 except RetryableTaskException as exc :
2929 try :
30- _auto_task_wrapper .retry ()
30+ retry_kwargs = {}
31+ if 'execute_inline' in kwargs :
32+ retry_kwargs ['execute_inline' ] = kwargs ['execute_inline' ]
33+
34+ if exc .delay is not None :
35+ retry_kwargs ['delay' ] = exc .delay
36+
37+ if exc .count_retries is not None :
38+ retry_kwargs ['count_retries' ] = exc .count_retries
39+
40+ _auto_task_wrapper .retry (** retry_kwargs )
3141 except MaxRetriesReachedException :
3242 logger .error ('Reached max retries in auto task {}.{}.{} with error: {}' .format (module_name , class_name , func_name , repr (exc )))
3343
3444
3545class AutoTaskService (BaseAutoTaskService ):
3646 def register_task (self , method , queue_name = None , max_retries = None ):
47+ # type: (Any, str, int) -> None
3748 instance = method .im_self
3849 class_ = instance .__class__
3950 func_name = method .func_name
4051
4152 def _auto_task_wrapper_invoker (* args , ** kwargs ):
42- if queue_name :
53+ if queue_name is not None :
4354 kwargs ['queue_name' ] = queue_name
4455
45- if max_retries :
56+ if max_retries is not None :
4657 kwargs ['max_retries' ] = max_retries
4758
4859 _auto_task_wrapper .delay (
0 commit comments