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

大家都在用twisted干啥?

  •  
  •   gcweb ·
    reterVision · 2013-12-22 23:30:03 +08:00 · 16920 次点击
    这是一个创建于 3980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    准备用这货写个API server,不知道靠不靠谱
    15 条回复    2018-01-14 00:42:19 +08:00
    zoowii
        1
    zoowii  
       2013-12-22 23:32:22 +08:00
    感觉好古老的东西啊,
    zoowii
        2
    zoowii  
       2013-12-22 23:33:16 +08:00
    和gevent, tornado相比有什么优势吗?
    zenliver
        3
    zenliver  
       2013-12-23 00:13:08 +08:00
    twisted make you twisted
    zhangxiao
        4
    zhangxiao  
       2013-12-23 00:17:45 +08:00
    感觉twisted对callback的封装很好,后来用nodejs和scala的finagle感觉都不如twisted那么简练
    jjx
        5
    jjx  
       2013-12-23 08:35:20 +08:00
    twisted 完全是java风格的,那些说python不适合大型项目的真应该看看twsited

    现在的twisted, 稳是我对他的最大印象, 其次,pypy下表现很好
    jjx
        6
    jjx  
       2013-12-23 08:55:00 +08:00
    我主要是用在工业仪表数据采集,有使用tcp server/serial/gsm等通讯模式
    JohnDeng
        7
    JohnDeng  
       2013-12-23 17:19:53 +08:00
    twisted来写TCP比较多吧。
    xuwenbao
        8
    xuwenbao  
       2013-12-24 13:34:51 +08:00
    @zenliver 这位同学说的对 ... twisted就是"扭曲"
    gcweb
        9
    gcweb  
    OP
       2013-12-24 15:21:54 +08:00
    @jjx 听上去很酷的样子啊,能具体介绍下吗?
    myrual
        10
    myrual  
       2013-12-24 22:56:55 +08:00
    如果基于tcp和udp协议设计应用的话非常顺手,基本上网络通讯你需要关心的业务逻辑都在一个类里面写就够了。
    缺点是你不能在处理逻辑里面sleep,或者出现阻塞操作,如果要处理延时或者block的操作,要用twisted的高级特性,但是我真的不懂高级特性。

    个人建议如果是基于tcp或者udp设计服务,不如试试go,性能很好,代码好写,坑少一些。
    jjx
        11
    jjx  
       2013-12-25 10:04:23 +08:00
    @myrual 几百个客户端也直接写在里面也没有事情, 几k 就要考虑分离进程了, 我用txzmq将实际的逻辑分离到多个woker, 但有时为了部署简单,也有直接在twisted里面跑的.

    @gcweb 我做的是一个通用的电压监测仪采集平台, 目前支持10来种国内厂家的电压监测仪. 仪表各种通讯方式都有udp,tcp, gsm,串口,tcp转串口等. 前端是一个pyzmq程序接受web请求, 后端是twisted +txzmq +worker(一表一服务,通常有多个服务跑), 还有一个zmq订阅服务将数据转发到前端, windows 上也有部署, 使用的是iocpreactor, twisted大概是python中少有的支持icop的框架之一了吧. 总之twisted部分就是非常稳定.
    F0ur
        12
    F0ur  
       2013-12-25 10:55:17 +08:00
    几年前用过twisted写过棋牌类游戏服务端。。觉得挺好用的
    gcweb
        13
    gcweb  
    OP
       2013-12-25 16:09:30 +08:00
    @myrual 确实也在考虑用golang
    Jordan
        14
    Jordan  
       2013-12-27 22:22:01 +08:00
    很稳定的一个框架,曾在上面写过一堆程序,在WIN下面调试完直接扔在AIX/HP-UX上跑,一点问题都没有。

    异步机制基于callback,只要不用callback-chain还好,否则还是自己先看一次deferred的代码,搞懂里面callback-chain的处理机制,会用的安心点。

    性能比不上gevent,特别是在高并发下。win下安装倒是方便,官网有编译好的exe包。

    如果程序要长期跑在win下,可以考虑。

    自从我用了Macbook后,就没碰过twisted,改用gevent,性能更好。
    pynix
        15
    pynix  
       2018-01-14 00:42:19 +08:00
    java 那帮人写出来恶心 python 的吧?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4294 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:06 · PVG 12:06 · LAX 20:06 · JFK 23:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.