@shared_task
def main_task ():
# each subtask links to an update task to update the chain progress
sub1 = task1.si()
sub1.link(update_progress.si())
jobs = chain(sub1, sub2...)
jobs.link(success_callback.si())
jobs.link_error(failure_callback.si())
sub1.link_error(sub_error.si())
and
@shared_task
def task1():
# check for error
if(True):
raise Exception()