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
linhanqiu
V2EX  ›  Python

不知道大家现在写异步请求是基于什么来写的, aiohttp+uvloop 还是 asyncio+torando?

  •  
  •   linhanqiu · 2018-04-22 06:34:18 +08:00 · 4099 次点击
    这是一个创建于 2397 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有没有伙伴比较一下两者的优劣势
    19 条回复    2018-04-24 08:51:57 +08:00
    ericls
        1
    ericls  
       2018-04-22 06:45:53 +08:00 via iPhone
    没有可比性
    Tarkky
        2
    Tarkky  
       2018-04-22 07:54:55 +08:00 via Android
    什么是异步请求,应用场景是什么?
    introom
        3
    introom  
       2018-04-22 07:59:43 +08:00 via Android
    tree twisted
    introom
        4
    introom  
       2018-04-22 07:59:50 +08:00 via Android
    treq
    clino
        5
    clino  
       2018-04-22 08:02:19 +08:00 via Android
    为啥不考虑 gevent 了?
    ioven
        6
    ioven  
       2018-04-22 08:32:34 +08:00
    gevent +1
    0xABCD
        7
    0xABCD  
       2018-04-22 08:57:51 +08:00 via Android
    不是说 uvloop 性能最好吗?
    0xABCD
        8
    0xABCD  
       2018-04-22 08:58:38 +08:00 via Android
    @ioven 不是说 uvloop 性能最好吗?
    PythonAnswer
        9
    PythonAnswer  
       2018-04-22 09:40:43 +08:00 via iPhone
    两种都用啊 区别不大
    owenliang
        10
    owenliang  
       2018-04-22 11:29:52 +08:00 via Android
    肯定是 twisted 事件循环,回归本质才能把控自如。
    est
        11
    est  
       2018-04-22 14:11:23 +08:00 via Android
    gevent

    tornado asynci 都是坑
    wzwwzw
        12
    wzwwzw  
       2018-04-22 17:51:40 +08:00   ❤️ 1
    aiohttp + uvloop
    congeec
        13
    congeec  
       2018-04-22 19:48:59 +08:00 via iPhone
    @est 老哥能不能说一下坑在哪儿?
    dbow
        14
    dbow  
       2018-04-22 19:52:11 +08:00
    自写事件循环跟 http 库的路过。
    imkerberos
        15
    imkerberos  
       2018-04-22 21:22:56 +08:00
    twisted/futures/Rx 都行.
    guyskk0x0
        16
    guyskk0x0  
       2018-04-22 23:14:55 +08:00 via Android
    python 异步感觉搞不起来,都转 golang 去了
    neoblackcap
        17
    neoblackcap  
       2018-04-23 01:34:56 +08:00
    uvloop 或者 tornado 都好,在 linux 上面还是调用 epoll 的,IO 复用的东西就不要想这么多,他们在事件循环方面没有数量级的差别。你考虑一下你的 http parser 或者 json serializer 更好了,这些 CPU 密集型的事情更容易影响性能。
    不过既然你问这个,大概这些影响对于你来说都是没有的。你熟悉哪个就用哪个就好了。
    uvloop 不就是用 libuv 实现了 asyncio 那套 API 嘛,libuv 提供的一些强悍的东西 uvloop 又提供不了。都站在 Python 那么高的抽象层了,那么就多想想两个框架哪个更适合自己的业务更好了。
    就目前看来,tornado 在网络编程方面对长连接应该好。如果需要基于 UDP/TCP 的业务,那么上 Tornado,基础更好,更成熟。
    至于基于 http 的,随便选,都一样。
    linhanqiu
        18
    linhanqiu  
    OP
       2018-04-23 11:24:36 +08:00
    @neoblackcap 好的
    ltoddy
        19
    ltoddy  
       2018-04-24 08:51:57 +08:00
    当然是 uvloop 了,
    来源于这篇文章: https://magic.io/blog/uvloop-blazing-fast-python-networking/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3889 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:22 · PVG 18:22 · LAX 02:22 · JFK 05:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.