requests 和 urllib2 的一些问题,求高能认识交流下!

2015-07-04 19:58:21 +08:00
 1oscar

requests模块

  1. 使用requests库,发现很好用,简单。
  2. requests库里介绍说:
Requests 使用的是 urllib3,继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

问题

  1. 感觉requests模块貌似是要比urllib要方便一点呀,但是requests库为什么没有像urllib2库一样安装python后便自带了,为啥还需要另外安装?

  2. requests是否真如介绍的那样,很厉害,想知道他有哪些缺陷吗?求经验丰富的人士回答下!

  3. requests库现在在企业里用的多吗?以及你们在使用requests时候路过哪些坑呢?

  4. 你们感觉以后requests发展会怎样,会被并进python安装包里吗?

9857 次点击
所在节点    Python
8 条回复
n37r06u3
2015-07-04 20:08:18 +08:00
目测是java企业级开发者
zog
2015-07-04 20:25:44 +08:00
1. requests是第三方库,不是python基金会实现的。python有很多第三方库,你可以去 https://pypi.python.org/pypi/pip 观摩
2. requests只是众多http client其中一个。上手简单。官方是同步实现,缺陷是直接使用不能异步调用,缺陷是速度慢。(可能可以和gevent同时使用,避免这个问题)
3. 同回答2
4. 基本没有这种可能。
1oscar
2015-07-04 20:56:21 +08:00
@zog 好的 非常感谢
yuankui
2015-07-04 23:13:02 +08:00
如果见一个库好就往python核心库合,那python安装包得右多大啊.
zhangneww
2015-07-05 07:54:20 +08:00
python 3 的 urllib 也不错啊
xiangace
2015-07-05 10:21:00 +08:00
requests 能帮你节省时间, 至于牛不牛逼是按自己场景来的,

* 比如做推送, web业务服务器通过调用 celery task 来避免 友盟/个推的推送接口阻塞.
调用 celery task 也是阻塞的, 但是你的 celery woker 部署在自己同个机群节点里, 甚至
一个交换机上, 假设阻塞延时在 10ms级别, 而如果业务直接调用 http 请求, 可能在100ms级别.

* 如果推送业务频繁, 那么 celery worker 在使用 request 发送 http 请求的性能就比不过 pycurl 了.
业务少使用 requests, 或者自己写测试脚本使用非常方便.
推送量大, 使用 pycurl. pycurl 的易用性没有 requests 高.

* 需求繁忙的时候, 性能和易用需要有个折中, 工作上有充分的时间,自己把 pycurl 或者
使用 human-curl 这个库封装或者修改为自己方便使用的方式, 当然是理想的.
kaneg
2015-07-06 14:08:53 +08:00
只要你能够使用第三方库,就尽管用requests吧,它已经成了事实上的Python最好用的http client
xiangace
2015-07-12 10:04:38 +08:00
@kaneg 最好的依据是以场景来说的, 当你需要大量做消息推送的业务时, 代码易用并没有什么用, 而切换其他语言, 比如 Golang 等高性能语言, 或者使用 pycurl 才是符合利益需求, requests 的效率并不高效

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203335

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX