Python 3.4/3.5/3.6 的 coroutine 日渐成熟之后, Tornado 之类的异步框架是不是会逐渐没落? (非 web)

2017-01-10 01:26:16 +08:00
 eyp82

关于这个, 大家有什么看法? Tornado有什么优势是目前Py3原生coroutine没有的?

PS: 本人水平比较渣, 本帖子是请教, 不是开炮. 另外 Tornado 的 web 框架不做重点讨论, 只是他的 coroutine 部分.

谢谢了

14504 次点击
所在节点    Python
37 条回复
PythonAnswer
2017-01-10 01:41:26 +08:00
tornado 支持新的写法。是目前最高级的异步框架了。

asyncio 的框架目前还没有怪兽型的出来统一江湖。

twisted gevent 这类是正在淘汰的。
lalalakakaka
2017-01-10 02:49:21 +08:00
asyncio 本身好难用

只是看语法的话,我还以为 gevent 是原生方法呢
就像 jQ 之余 JS 一样,虽然 JS 原生越来越强大,但是 JQ 用起来更快捷方便啊。

并且 python 原生异步方法的进步也可以提升 gevent 以及 tornado 的性能,使他们内部实现更高效简单,这是个双赢过程。
kongkongyzt
2017-01-10 07:40:10 +08:00
asyncio 确实难用

现在用上这个特性比较出名的 web 框架,也就 sanit 了
phrack
2017-01-10 08:45:26 +08:00
我还以为是我菜才觉得 asyncio 难用,看了这个帖子我放心了。
strahe
2017-01-10 09:23:28 +08:00
最近在用 aiohttp ,实话说,感觉优雅,就是扩展太少。
janxin
2017-01-10 09:26:39 +08:00
不是很明白 asyncio 难用在哪个地方呢?因为太底层了缺少一些上层封装?
janxin
2017-01-10 09:28:09 +08:00
我记得 Ben Darnell 来 pycon China 的时候提过考虑将底层 event loop 替换成 asyncio
zhouquanbest
2017-01-10 09:47:23 +08:00
Tornado 可以直接使用 asyncio
http://www.tornadoweb.org/en/stable/asyncio.html
只需要 AsyncIOMainLoop().install()
Gem
2017-01-10 09:56:38 +08:00
什么时候出来一个成熟强大的异步 ORM ?
raptor
2017-01-10 10:07:45 +08:00
重要的是数据库驱动要支持异步
glasslion
2017-01-10 10:10:45 +08:00
@Gem ORM 和 异步 天然互斥
JhZ7z587cYROBgVQ
2017-01-10 10:26:24 +08:00
@glasslion 为啥会天然排斥啊?我不是很明白 orz
clino
2017-01-10 10:28:51 +08:00
twisted 没落就算了, gevent 我觉得还是挺好的,asyncio 应该不能完全替代吧?
JhZ7z587cYROBgVQ
2017-01-10 10:32:43 +08:00
@clino 其实 asyncio 也有替代品,可以用 uvloop 和 curio 来代替的
est
2017-01-10 10:33:42 +08:00
gevent 可以再战 200 年。

从性能和写法上来说都是最优解。

不服罚抄 twisted 100 遍。
jmp2x
2017-01-10 10:34:54 +08:00
算是对 Tornado 粉转黑, 一个框架好不好并不仅仅在于框架本身, 更要在于周围的环境和中间件, 比如现在还没有好的数据库 driver, 即使有些是异步, 也并不适用于生产环境. 另一个 Torando 进行模块化设计时十分不美观 你需要在所有的子函数都加上异步装饰器, 其实说白了还是用的人少, 深入研究的人少, 导致周边环境不是很好.
Gem
2017-01-10 10:48:44 +08:00
@glasslion Motor ?
guyskk
2017-01-10 10:49:41 +08:00
同步的代码比异步的好写,坑少,逻辑更容易理解,对性能要求不高的没必要异步。对性能要求高的,可能会用 gevent , asyncio 这些异步库,也可能会用 c, rust 这些语言实现。但是 asyncio 太底层了,概念超级多,直接用太复杂了,但进了标准库说明它足够优秀,灵活性和可拓展性是别的轮子没法比的,估计 1~2 年内就会有成熟框架出现。
Gem
2017-01-10 10:50:28 +08:00
@glasslion 嗯, Motor 不合适, nodejs 中的 Sequelize ?
PythonAnswer
2017-01-10 11:21:14 +08:00
本机 io 其实 asyncio 挺好用的。 aiohttp 写个小爬虫也挺方便。

web 框架方面,应该和 tornado 合力发展,两个都会变强。

得等异步数据库发展,等 django 这类的东西自然被淘汰掉, aio 的 web 框架才会 nb 吧。

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

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

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

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

© 2021 V2EX