我有一个非GAE应用程序/请求处理程序,它使用a中的Python请求模块通过POST请求发布上传的图像,作为二进制文件:
headers = {"MyAuth" : "xyz"}
r = requests.post(base_uri, data=open('0.jpg')), headers=headers)
用户上传图像,上传的图像保存在本地,打开阅读,然后通过发布请求发送到远程分类器管道 - 这将返回一些关于图像功能的JSON,然后可以返回给用户。 / p>
我需要在GAE应用中实现此行为,但是知道GAE没有传统的文件系统,所以我必须使用StringIO
:
data = ... #some jpg => str
headers = {"MyAuth" : "xyz"}
r = requests.post(base_uri, data=StringIO.StringIO(data), headers=headers)
如何以GAE友好的方式完全替换此示例中的请求模块?
非常感谢。
答案 0 :(得分:1)
用于在app引擎上发出HTTP请求的常用模块是urlfetch,它可以通过google.appengine.api.urlfetch
在默认运行时中使用。据说urllib2和/或urllib3也是选项,但我自己没有使用过,所以我不能肯定地说。
您还可以在应用引擎目录中install requests并将其与项目一起上传,但我发现有点麻烦,因为请求还有自己的依赖项,您也需要包含它。
答案 1 :(得分:0)
虽然可能不是解决这个问题的最佳解决方案,但我设法让请求2.3.0在GAE项目中工作:
pip install --target myproject/externals/ requests==2.3.0
我现在可以像往常一样使用请求。