You update the subtask status here, but then re-raise send_exception. Won't it then be caught again by the "else" clause at L305 and once again the update_subtask_status (L307) will be called?