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

2018-04-22 06:34:18 +08:00
 linhanqiu
有没有伙伴比较一下两者的优劣势
3975 次点击
所在节点    Python
19 条回复
ericls
2018-04-22 06:45:53 +08:00
没有可比性
Tarkky
2018-04-22 07:54:55 +08:00
什么是异步请求,应用场景是什么?
introom
2018-04-22 07:59:43 +08:00
tree twisted
introom
2018-04-22 07:59:50 +08:00
treq
clino
2018-04-22 08:02:19 +08:00
为啥不考虑 gevent 了?
ioven
2018-04-22 08:32:34 +08:00
gevent +1
0xABCD
2018-04-22 08:57:51 +08:00
不是说 uvloop 性能最好吗?
0xABCD
2018-04-22 08:58:38 +08:00
@ioven 不是说 uvloop 性能最好吗?
PythonAnswer
2018-04-22 09:40:43 +08:00
两种都用啊 区别不大
owenliang
2018-04-22 11:29:52 +08:00
肯定是 twisted 事件循环,回归本质才能把控自如。
est
2018-04-22 14:11:23 +08:00
gevent

tornado asynci 都是坑
wzwwzw
2018-04-22 17:51:40 +08:00
aiohttp + uvloop
congeec
2018-04-22 19:48:59 +08:00
@est 老哥能不能说一下坑在哪儿?
dbow
2018-04-22 19:52:11 +08:00
自写事件循环跟 http 库的路过。
imkerberos
2018-04-22 21:22:56 +08:00
twisted/futures/Rx 都行.
guyskk0x0
2018-04-22 23:14:55 +08:00
python 异步感觉搞不起来,都转 golang 去了
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
2018-04-23 11:24:36 +08:00
@neoblackcap 好的
ltoddy
2018-04-24 08:51:57 +08:00
当然是 uvloop 了,
来源于这篇文章: https://magic.io/blog/uvloop-blazing-fast-python-networking/

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

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

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

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

© 2021 V2EX