docs: def push_dcp(self, event, callback, position="right"):
          """Connect a dcp, push a function.
  
          :param event: str,unicode: A unique identifier name for dcp.
  
          :param callback: callable: Corresponding to the event to perform a function.
  
          :param position: The position of the insertion function, right(default) and left.
  
          :raises: DCPError,NotCallableError: raises an exception
  
          .. versionadded:: 2.1.0
          """
          if event and isinstance(event, string_types) and callable(callback) and position in ("left", "right"):
              if event in self._dcp_funcs:
                  if position == "right":
                      self._dcp_funcs[event].append(callback)
                  else:
                      self._dcp_funcs[event].appendleft(callback)
              else:
                  self._dcp_funcs[event] = deque([callback])
          else:
              if not callable(callback):
                  raise NotCallableError("The event %s cannot be called back" % event)
              raise DCPError("Invalid parameter")