class_docstr: The lightweight executor DAGNode of DeploymentNode that optimizes for
  efficiency.
  
      - We need Ray DAGNode's traversal and replacement mechanism to deal
          with deeply nested nodes as args in the DAG
      - Meanwhile, __init__, _copy_impl and _execute_impl are on the critical
          pass of execution for every request.
  
  Therefore for serve we introduce a minimal weight node as the final product
  of DAG transformation, and will be used in actual execution as well as
  deployment.
class_docstr_tok: ["The","lightweight","executor","DAGNode","of","DeploymentNode","that","optimizes","for","efficiency",".","-","We","need","Ray","DAGNode","'s","traversal","and","replacement","mechanism","to","deal","with","deeply","nested","nodes","as","args","in","the","DAG","-","Meanwhile",",","__init__",",","_copy_impl","and","_execute_impl","are","on","the","critical","pass","of","execution","for","every","request",".","Therefore","for","serve","we","introduce","a","minimal","weight","node","as","the","final","product","of","DAG","transformation",",","and","will","be","used","in","actual","execution","as","well","as","deployment","."]
code: def __init__(
      self,
      deployment_handle,
      dag_args,  # Not deployment init args
      dag_kwargs,  # Not deployment init kwargs
  ):
      self._deployment_handle = deployment_handle
      super().__init__(dag_args, dag_kwargs, {}, {})
  
file_path: ray/python/ray/serve/_private/deployment_executor_node.py
imports: from typing import Any, Dict, List
  from ray.dag import DAGNode
  from ray.dag.constants import DAGNODE_TYPE_KEY
  from ray.dag.format_utils import get_dag_node_str
  from ray.serve.handle import RayServeHandle
label_desc: Use image node_id 1 to create a new DeploymentExecutorNode object from inherited base classes: DAGNode with example: obj = DeploymentExecutorNode(deployment_handle, dag_args, dag_kwargs)