title: Iterable object and Django StreamingHttpResponse
body: <p>I want to connect to internal http services with django and I need to buffer the output the http response of those services because some contents are very large.</p>
  
  <p>I am using python 3.6, django 2.0, <code>http.client</code> and the following code:</p>
  
  <pre class="lang-python prettyprint-override"><code>class HTTPStreamIterAndClose():
      def __init__(self, conn, res, buffsize):
          self.conn = conn
          self.res = res
          self.buffsize = buffsize
          self.length = 1
  
          bytes_length = int(res.getheader('Content-Length'))
  
          if buffsize &lt; bytes_length:
              self.length = math.ceil(bytes_length/buffsize)
  
      def __iter__(self):
          return self
  
      def __next__(self):
          buff = self.res.read(self.buffsize)
  
          if buff is b'':
              self.res.close()
              self.conn.close()
  
              raise StopIteration
          else:
  
              return buff
  
      def __len__(self):
          return self.length
  
  
  def passthru_http_service(request, server, timeout, path):
      serv = HTTPService(server, timeout)
      res = serv.request(path)
  
      response = StreamingHttpResponse(
          HTTPStreamIterAndClose(serv.connection, res, 200),
          content_type='application/json'
      )
      response['Content-Length'] = res.getheader('Content-Length')
  
      return response
  </code></pre>
  
  <p>And the reponse is empty, I test the iterator with:</p>
  
  <pre><code>b''.join(HTTPStreamIterAndClose(serv.connection, res, 200)
  </code></pre>
  
  <p>And everything works fine, I don't know why is not working.</p>