title: can't upload > ~2GB to Google Cloud Storage
body: <p>Trace below.  </p>
  
  <p>The relevant Python snippet:</p>
  
  <pre><code>bucket = _get_bucket(location['bucket'])
  blob = bucket.blob(location['path'])
  blob.upload_from_filename(source_path)
  </code></pre>
  
  <p>Which ultimately triggers (from the ssl library): </p>
  
  <blockquote>
    <p>OverflowError: string longer than 2147483647 bytes</p>
  </blockquote>
  
  <p>I assume there is some special configuration option I'm missing?</p>
  
  <p>This is possibly related to this ~1.5yr old apparently still-open issue: <a href="https://github.com/googledatalab/datalab/issues/784" rel="noreferrer">https://github.com/googledatalab/datalab/issues/784</a>.</p>
  
  <p>Help appreciated!</p>
  
  <p>Full trace:</p>
  
  <blockquote>
    <p>[File "/usr/src/app/gcloud/download_data.py", line 109, in *******
      blob.upload_from_filename(source_path)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py", line 992, in upload_from_filename
      size=total_bytes)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py", line 946, in upload_from_file
      client, file_obj, content_type, size, num_retries)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py", line 867, in _do_upload
      client, stream, content_type, size, num_retries)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/cloud/storage/blob.py", line 700, in _do_multipart_upload
      transport, data, object_metadata, content_type)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/resumable_media/requests/upload.py", line 97, in transmit
      retry_strategy=self._retry_strategy)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/resumable_media/requests/_helpers.py", line 101, in http_request
      func, RequestsMixin._get_status_code, retry_strategy)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/resumable_media/_helpers.py", line 146, in wait_and_retry
      response = func()</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/google/auth/transport/requests.py", line 186, in request
      method, url, data=data, headers=request_headers, **kwargs)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 508, in request
      resp = self.send(prep, **send_kwargs)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 618, in send
      r = adapter.send(request, **kwargs)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 440, in send
      timeout=timeout</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
      chunked=chunked)</p>
    
    <p>File "/usr/local/lib/python3.5/dist-packages/urllib3/connectionpool.py", line 357, in _make_request
      conn.request(method, url, **httplib_request_kw)</p>
    
    <p>File "/usr/lib/python3.5/http/client.py", line 1106, in request
      self._send_request(method, url, body, headers)</p>
    
    <p>File "/usr/lib/python3.5/http/client.py", line 1151, in _send_request
      self.endheaders(body)</p>
    
    <p>File "/usr/lib/python3.5/http/client.py", line 1102, in endheaders
      self._send_output(message_body)</p>
    
    <p>File "/usr/lib/python3.5/http/client.py", line 936, in _send_output
      self.send(message_body)</p>
    
    <p>File "/usr/lib/python3.5/http/client.py", line 908, in send
      self.sock.sendall(data)</p>
    
    <p>File "/usr/lib/python3.5/ssl.py", line 891, in sendall
      v = self.send(data[count:])</p>
    
    <p>File "/usr/lib/python3.5/ssl.py", line 861, in send
      return self._sslobj.write(data)</p>
    
    <p>File "/usr/lib/python3.5/ssl.py", line 586, in write
      return self._sslobj.write(data)</p>
    
    <p>OverflowError: string longer than 2147483647 bytes</p>
  </blockquote>