V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
1oscar
V2EX  ›  Python

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

  •  
  •   1oscar · 2015-07-04 19:58:21 +08:00 · 9980 次点击
    这是一个创建于 3434 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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安装包里吗?

    8 条回复    2015-07-12 10:04:38 +08:00
    n37r06u3
        1
    n37r06u3  
       2015-07-04 20:08:18 +08:00
    目测是java企业级开发者
    zog
        2
    zog  
       2015-07-04 20:25:44 +08:00   ❤️ 3
    1. requests是第三方库,不是python基金会实现的。python有很多第三方库,你可以去 https://pypi.python.org/pypi/pip 观摩
    2. requests只是众多http client其中一个。上手简单。官方是同步实现,缺陷是直接使用不能异步调用,缺陷是速度慢。(可能可以和gevent同时使用,避免这个问题)
    3. 同回答2
    4. 基本没有这种可能。
    1oscar
        3
    1oscar  
    OP
       2015-07-04 20:56:21 +08:00
    @zog 好的 非常感谢
    yuankui
        4
    yuankui  
       2015-07-04 23:13:02 +08:00
    如果见一个库好就往python核心库合,那python安装包得右多大啊.
    zhangneww
        5
    zhangneww  
       2015-07-05 07:54:20 +08:00 via Android
    python 3 的 urllib 也不错啊
    xiangace
        6
    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
        7
    kaneg  
       2015-07-06 14:08:53 +08:00
    只要你能够使用第三方库,就尽管用requests吧,它已经成了事实上的Python最好用的http client
    xiangace
        8
    xiangace  
       2015-07-12 10:04:38 +08:00
    @kaneg 最好的依据是以场景来说的, 当你需要大量做消息推送的业务时, 代码易用并没有什么用, 而切换其他语言, 比如 Golang 等高性能语言, 或者使用 pycurl 才是符合利益需求, requests 的效率并不高效
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3350 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:29 · PVG 19:29 · LAX 03:29 · JFK 06:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.