requests 和 urllib2 的一些问题,求高能认识交流下! - V2EX
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 10339 次点击
    这是一个创建于 3808 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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     Solana     2686 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:10 PVG 22:10 LAX 06:10 JFK 09:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86