项目中,需要用requests库从服务端获取数据,踩到两个坑,记录一下。
首先是,如果直接用 requests.post(url,data=data)
,总是得不到正确的响应。其实,这个坑之前就踩过, 我还特意记录了 requests 库踩坑,结果这次还是忘了这个教训。看来有些坑,需要多踩几次才能印象深刻。
原因总结如下:
requests
如果收到data
参数,则默认用表单形式发出data,如果收到json
参数,则默认用json格式发送。如果想用data
参数发送json,那就必须先手动用json.dump()
转换数据, 然后指定headers的类型为application/json
.
另一个坑是速度太慢。我需要多次从同一个接口获取数据,测试了一下,发现一次requests请求,居然耗时接近两秒多,太不可思议了。这个坑,之前也踩过,第一时间想到应该用 Http Keep-Alive 来优化。利用session机制,与服务之间建立TCP连接复用,这样能够大大降低时间开销。
网友评论