six.moves.http_client seems to handle the Host header manually.
Google App Engine doesn't like the Host header being set manually: https://cloud.google.com/appengine/docs/python/outbound-requests
For security reasons, the following headers cannot be modified by the application:
Content-Length
Host
Vary
Via
X-Appengine-Inbound-Appid
X-Forwarded-For
X-ProxyUser-IP
The end result is that you get an error in your log and all your requests 404:
WARNING 2016-12-27 16:54:18,604 urlfetch_stub.py:550] Stripped prohibited headers from URLFetch request: ['Host']
I don't have a recommendation for a fix right now (I am using my own implementation as a workaround), but wanted to make sure this issue was captured as the Python API client seems broken on GAE.