code: def execute_task(self, task, parent_result):
          
          task.before_run(parent_result)
          context = task.create_context(self.message_queue)
          pending_result = self.pool.apply_async(execute_task_async, (task.func, task.id, context))
          self.pending_results.append(pending_result)
docs: Run a single task in another process saving the result to our list of pending results.
          :param task: Task: function and data we can run in another process
          :param parent_result: object: result from our parent task