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

tornado 貌似 4.5+考虑放弃维护 Python 2.x 了

  •  
  •   SlipStupig · 2017-02-25 18:22:06 +08:00 · 7154 次点击
    这是一个创建于 2615 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天看了 google group 看作者考虑以后可能会不支持 2.x 了( https://groups.google.com/forum/#!msg/python-tornado/uqf0DjxILHc/VwRDS9tcDwAJ )现在 python3 应该学习了吗?
    第 1 条附言  ·  2017-02-26 13:39:40 +08:00

    得到作者明确的回答了

    Tornado 4.5 and 5.0 will support both python 2 and python 3. I think we're still a few years away from dropping python 2.

    Ben还是会继续支持Python 2 消灭到2还需要一些时间

    47 条回复    2017-02-27 12:20:53 +08:00
    janxin
        1
    janxin  
       2017-02-25 18:26:47 +08:00 via iPhone
    挺好的,滋次,下一步上 asyncio 就行了
    SlipStupig
        2
    SlipStupig  
    OP
       2017-02-25 18:28:49 +08:00
    @janxin 后面异步不再是用 feature 来模拟了,而是原生的 asyncio
    Gem
        3
    Gem  
       2017-02-25 19:08:20 +08:00
    最近一直关注 Sanic https://github.com/channelcat/sanic 比 tornado 生态貌似好些
    pc10201
        4
    pc10201  
       2017-02-25 19:14:09 +08:00   ❤️ 1
    2.7 将在 2020 年终止维护了~
    SlipStupig
        5
    SlipStupig  
    OP
       2017-02-25 19:40:56 +08:00
    @Gem 好在哪里能不能介绍一下?
    Gem
        6
    Gem  
       2017-02-25 19:59:40 +08:00
    @SlipStupig 基于 python3.5
    Gem
        7
    Gem  
       2017-02-25 20:03:14 +08:00   ❤️ 1
    @Gem
    @SlipStupig 不小心就回车了,基于 python3.5 ,基于 uvloop 的实现,用法几乎就是 flask ,习惯 flask 的人,直接上手,看开发也很活跃,然后速度号称还是比较有优势的。
    SlipStupig
        8
    SlipStupig  
    OP
       2017-02-25 21:32:45 +08:00
    @Gem 体验了一下感觉速度很牛啊,比 tornado 快的多而且够轻量
    windfarer
        9
    windfarer  
       2017-02-25 22:08:24 +08:00
    @Gem sanic 那个 json 序列化的函数居然就叫 json ,和标准库的包名都冲突了,直接路人转黑
    only0jac
        10
    only0jac  
       2017-02-25 22:11:11 +08:00 via Android
    @Gem 看了下,不支持 win 系?
    SlipStupig
        11
    SlipStupig  
    OP
       2017-02-25 22:15:34 +08:00
    @windfarer 可以用 as 转移嘛
    freestyle
        12
    freestyle  
       2017-02-25 22:48:01 +08:00
    支持
    windfarer
        13
    windfarer  
       2017-02-25 22:48:21 +08:00
    @SlipStupig 强迫症表示不能忍
    pyufftj
        14
    pyufftj  
       2017-02-25 23:17:19 +08:00
    python 还好啦, 2 和 3 语法差别不是很大,学习成本不是很大。要是 Angular 和 Angular2 的话就要哭了
    lichun
        15
    lichun  
       2017-02-25 23:29:56 +08:00   ❤️ 1
    @windfarer 可以写 from sanic import response; requests.json, 不要直接 from sanic.request import json
    l1093178
        16
    l1093178  
       2017-02-25 23:38:35 +08:00
    @windfarer 不 import 到当前 namespace 就没事,直接 import as 也可以( flask 还有 flask.json 呢)
    windfarer
        17
    windfarer  
       2017-02-25 23:48:10 +08:00
    @lichun
    @l1093178
    我知道有许多方法可以解决掉这个问题,但 sanic 的这种命名方式显然是不够优雅的,这是创造了一个本来不会存在的问题
    Simple is better than complex.
    windfarer
        18
    windfarer  
       2017-02-25 23:48:44 +08:00
    话说跑题了喂,不应该讨论 tornado 的么= =
    gwind
        19
    gwind  
       2017-02-26 00:02:37 +08:00
    建议学习 Python3 , 支持已经很广泛。

    btw:

    1. tornado 框架我认为很有特点的一个方面:在于 RequestHandler 是 Class 类型,用到了 Python 的面向对象优势。

    2. 如果追求速率, golang 开发 http api 的应用情景越来越多
    phithon
        20
    phithon  
       2017-02-26 03:07:06 +08:00
    django 2 也要放弃支持 Python2 了
    bigzhu
        21
    bigzhu  
       2017-02-26 09:53:22 +08:00 via Android
    挺想换的,但是之前在 tornado 下写了很多很多可以复用的类…改起来工作量不小
    chenqh
        22
    chenqh  
       2017-02-26 11:41:33 +08:00
    到了 2020 年,我用不用 python 还不知道呢。。
    我觉得对于 python 异步而已,主要没有框架异步(tornado)+orm 异步(?)+template 异步(?)+redis 异步(?)一条龙,所以我现在宁愿用 flask 。。反正并发不是很高
    lecher
        23
    lecher  
       2017-02-26 12:39:35 +08:00 via Android
    ben 改决定了,他认为还需要几年才能放弃 Python2 , 4.5 乃至 5.0 都还会是兼容 Python2 、 Python3 。
    fy
        24
    fy  
       2017-02-26 12:54:06 +08:00
    其实如果抛弃 2 的支持是好事啊,现在除了老项目谁还用 2 ?

    隔壁的 aiohttp 搞的风生水起,很大一个原因就是没有包袱。
    jingniao
        25
    jingniao  
       2017-02-26 13:02:54 +08:00 via Android
    除去 rhel6 还在 2.6 ,其他发行版的默认 python 都还是 2.7 吧,即使是安装有 3.x
    期待第一个默认 3.x 的发行版出现,这样才算是吹响消灭 2.7 的号角
    SlipStupig
        26
    SlipStupig  
    OP
       2017-02-26 13:42:16 +08:00
    @chenqh tornado 相关的一部支持还是比较好,该有的都有, tornado 自带长连接
    SlipStupig
        27
    SlipStupig  
    OP
       2017-02-26 13:45:04 +08:00
    @gwind 个人还是喜欢 Tornado 风格,代码利用率高
    chenqh
        28
    chenqh  
       2017-02-26 16:36:39 +08:00
    @SlipStupig py2 你用什么 orm? wtform 有异步库吗? jinja2 有异步库吗
    SlipStupig
        29
    SlipStupig  
    OP
       2017-02-26 18:15:14 +08:00
    @chenqh ORM 我用 SQLAlchemy , 你说这两个库本质是表单渲染只要 handler 是异步就可以了,不知道字符串异步替换有什么好处
    chenqh
        30
    chenqh  
       2017-02-26 18:40:41 +08:00
    你 SQLAlchemy 怎么异步法?不会是用 tornado-celery 那种方式吧
    SlipStupig
        31
    SlipStupig  
    OP
       2017-02-26 18:46:05 +08:00
    @chenqh 可以指定 tornado-mysql 的驱动啊....
    hosiet
        32
    hosiet  
       2017-02-26 18:49:37 +08:00 via Android
    @jingniao Arch 多年前就切了, Arch 的这个行为当年直接导致了一个阐明默认 Python 版本选择方式的 PEP 出现
    SlipStupig
        33
    SlipStupig  
    OP
       2017-02-26 18:52:00 +08:00
    @chenqh 但是官方不推荐你异步操作
    chenqh
        34
    chenqh  
       2017-02-26 18:55:18 +08:00
    @SlipStupig 。。。。
    jingniao
        35
    jingniao  
       2017-02-26 19:23:33 +08:00 via Android
    @hosiet 还真有啊,这个发行版还真没用过
    killpanda
        36
    killpanda  
       2017-02-26 20:22:19 +08:00
    sanic 和 Flask 语法简直一模一样,迁移太方便了。不过貌似部署这块比较初级,还没有 graceful reload
    workwonder
        37
    workwonder  
       2017-02-26 20:32:28 +08:00 via Android
    @killpanda tornado 不是也没有 gracefully reload 吗?
    usenix
        38
    usenix  
       2017-02-26 22:06:09 +08:00
    Sanic 列出的 benchmark , Tornado 的 rps 也太惨了吧。。。
    果然 pure python 不太给力啊。。。
    SlipStupig
        39
    SlipStupig  
    OP
       2017-02-26 22:12:30 +08:00
    @usenix 等 4.5 版本切换到 asyncio 上就可能好多了
    Zzzzzzzzz
        40
    Zzzzzzzzz  
       2017-02-26 22:16:21 +08:00
    @usenix tornado 在 pypy 上跟开了挂一样
    messense
        41
    messense  
       2017-02-26 22:32:16 +08:00
    最近试用了 Sanic 感觉还是存在很多问题,得自己去填坑。
    killpanda
        42
    killpanda  
       2017-02-26 23:09:20 +08:00
    @messense 有什么问题能说一下么?最近打算把 sanic 用到生产商
    killpanda
        43
    killpanda  
       2017-02-26 23:11:05 +08:00
    @workwonder 我用 Flask 比较多,所以没有注意 tornado 这块,不过我看网上还是有些解决方案的
    messense
        44
    messense  
       2017-02-27 09:47:49 +08:00
    @killpanda 目前发现的两个问题:

    1. 它自己的 logging 用得不太对
    2. 请求出现异常的时候 request 对象可能是 None ,日志会非常难 debug
    aljun
        45
    aljun  
       2017-02-27 10:15:51 +08:00
    @killpanda 。。。我确定你需要去看看 sanic 源码
    kinghui
        46
    kinghui  
       2017-02-27 11:23:32 +08:00
    @Gem 粗略的看来一下 Sanic 的源码, 代码质量和 Tornado 相差甚远.
    workwonder
        47
    workwonder  
       2017-02-27 12:20:53 +08:00 via Android
    @killpanda 对啊,没有标准的方法。有 hack 的方法,不完美。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5221 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 05:42 · PVG 13:42 · LAX 22:42 · JFK 01:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.