Exemplo n.º 1
0
 def reset_stream(self):
     # Trying to reset a stream when there is a no stream will
     # just immediately return.  It's not an error, it will produce
     # the same result as if we had actually reset the stream (we'll send
     # the entire body contents again if we need to).
     # Same case if the body is a string/bytes type.
     if self.body is None or isinstance(self.body, six.text_type) or \
             isinstance(self.body, six.binary_type):
         return
     try:
         logger.debug("Rewinding stream: %s", self.body)
         self.body.seek(0)
     except Exception as e:
         logger.debug("Unable to rewind stream: %s", e)
         raise UnseekableStreamError(stream_object=self.body)
Exemplo n.º 2
0
    def reset_stream(self):
        """Resets the streaming body to it's initial position.

        If the request contains a streaming body (a streamable file-like object)
        seek to the object's initial position to ensure the entire contents of
        the object is sent. This is a no-op for static bytes-like body types.
        """
        # Trying to reset a stream when there is a no stream will
        # just immediately return.  It's not an error, it will produce
        # the same result as if we had actually reset the stream (we'll send
        # the entire body contents again if we need to).
        # Same case if the body is a string/bytes/bytearray type.

        non_seekable_types = (six.binary_type, six.text_type, bytearray)
        if self.body is None or isinstance(self.body, non_seekable_types):
            return
        try:
            logger.debug("Rewinding stream: %s", self.body)
            self.body.seek(0)
        except Exception as e:
            logger.debug("Unable to rewind stream: %s", e)
            raise UnseekableStreamError(stream_object=self.body)