Python 网络编程框架 tornado 还是 twisted?

2019-05-22 11:06:35 +08:00
 youngce

目前项目中涉及到一些基于 Python 网络编程的工作,前期迫于项目进度,直接用简单 socket 加多线程把需求实现了。但是出于性能优化以及自我提升的需要,希望用一个高性能的框架来重构一下。 不知道有没有前辈指点一下,应该选择哪个框架。进行学习与开发?

5063 次点击
所在节点    Python
28 条回复
NaVient
2019-05-22 11:08:51 +08:00
高性能就换 go
seeusoon
2019-05-22 11:11:12 +08:00
能换成 go 么?比你说的这两个都好
非得二选一,那就是 tornado
youngce
2019-05-22 11:11:58 +08:00
@NaVient go 的网络编程上周末刚刚看着文档写了几个 demo,用到生产还是有点虚。。。
Philippa
2019-05-22 11:18:13 +08:00
两个都很老,二选一推荐 Twisted 比较好,因为很多其他项目也会集成这个框架。但语法比较魔法,还是 async 出来之前的产物,但性能很不错,熟练之后你可以用它来改造你的其他项目。
crazypig14
2019-05-22 11:28:10 +08:00
我喜欢 flask
keakon
2019-05-22 11:45:18 +08:00
之前我也是 Tornado 的粉丝,不过现在在做的新项目是用 Python 3.7,比较了一番后用了 Starlette。
如果不是做 web 服务,自己拿 asyncio 实现也没几行代码,还有挺多数据库已经支持 asyncio 了。
youngce
2019-05-22 11:47:16 +08:00
@crazypig14 flask 属于常规的 WEB 框架了,可能不在这里的讨论范围内?
BBCCBB
2019-05-22 11:51:01 +08:00
49 年入国军..


建议要么用 asyncio, 要么就 gevent 撑一撑.
Wincer
2019-05-22 11:56:18 +08:00
asyncio 里是有 socket 的,不过并不兼容标准库里的 socket,但确实是异步非阻塞。如果你一定想要高性能的话,可以试试别人用 cython 写的框架 vibora。
Trim21
2019-05-22 12:24:51 +08:00
起码也得是基于 asyncio 的吧,twisted 就算了
crazypig14
2019-05-22 12:40:19 +08:00
@youngce 没仔细看不好意思。。场景压力没那么大的话 twisted 写起来舒服点
lanshee
2019-05-22 15:23:52 +08:00
试试 sanic????
warcraft1236
2019-05-22 15:59:34 +08:00
https://github.com/MagicStack/uvloop 最近看到个这个,不知道怎么样
chenqh
2019-05-22 16:09:32 +08:00
tornado 在 py3 用的就是 asyncio,你们说什么呢
misaka19000
2019-05-22 16:22:34 +08:00
经验之谈,不要用 Python 写网络相关的东西,异步+协程 会被搞死的,我也建议使用 go 来写,或者 Java 也行
lolizeppelin
2019-05-22 16:23:53 +08:00
openstack 用的 eventlet,什么 tornado、twisted 的都没用

什么 async 的就算了...除非大量现有库改成 async 的
否则一旦你用到有没有 async 的支持会很蛋痛

eventlet 是不好,但确是目前最可行的方式,网络编程想提升的话,建议你把 eventlet 的代码通读搞懂了

搞懂这个,你会发现所有的协程其实都是一个卵原理
imkerberos
2019-05-22 16:26:20 +08:00
虽然 async 比较新, 但是现在我还是推荐你用 twisted, 以后你会感谢我.
zoowii
2019-05-22 16:29:29 +08:00
用 go
2805408253
2019-05-22 16:30:56 +08:00
15 年的项目用的就是 twisted,挺稳定的。
2805408253
2019-05-22 16:32:02 +08:00
现在重构的话,我选择 go。坏笑.jpg

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

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

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

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

© 2021 V2EX