【问题标题】:Tornado and Python 3.x龙卷风和 Python 3.x
【发布时间】:2010-12-19 07:32:33
【问题描述】:

我真的很喜欢 Tornado,我想将它与 Python 3 一起使用,尽管它是为 Python 2.5 和 2.6 版本编写的。

不幸的是,该项目的源代码似乎没有附带测试套件。如果我理解正确,它的 WSGI 部分将不会那么容易移植,因为它的规范还没有为Python 3 yet (?) 做好准备,但我对 Tornado 的异步功能很感兴趣,所以 WSGI 兼容性不是我主要关心的问题,即使它会不错。

基本上我想知道在尝试移植时要查看/注意什么,或者是否已经有端口/分叉(我找不到任何使用 google 或浏览 github,尽管我可能错过了一些东西)。

【问题讨论】:

标签: python asynchronous python-3.x wsgi tornado


【解决方案1】:

没有像样的测试套件的软件是legacy software——即使它昨天已经发布了!-)——所以第一步是开始构建测试套件;我在 URL 中推荐 Feathers 的书,但您可以从 this PDF 开始,这是一篇同样由 Feathers 撰写的文章,在本书之前并总结了本书的主要核心思想和实践之一。

一旦你了一个测试套件的启动,用 Python 2.6 和一个 -3 标志来运行它,以警告你 2to3 可能会遇到的事情;一旦这些被修复,是时候尝试2to3 并尝试使用 Python 3 的测试套件了。毫无疑问,你必须不断加强测试套件,我建议定期向上游 Tornado 提交所有改进开源项目——这些测试对于需要维护或移植 Tornado 的任何人都是有用的,毕竟,不仅仅是对 Python 3 感兴趣的人,所以,如果幸运的话,你可能会获得追随者等等以及更多的测试套件贡献者。

我不敢相信人们在 2009 年发布了主要的开源项目!!!,没有像样的测试套件,但我相信你,这确实是 Tornadoers 所做的...

【讨论】:

  • Good cmets Alex:很遗憾,因为 Tornado 代码非常干净,我最近一直在玩它。有趣的是,它是由运行当今地球上最大的网站之一的团队构建的,他们没想过编写测试! +1
  • @jkp,或者他们内部有一个测试套件,但宁愿不发布它,至少它会泄露内部信息,例如一些超级测试基础设施的存在可能会给他们一些竞争优势——在这种情况下,这将是一个可以理解的妥协(发布代码本身而不是测试——毕竟总比不发布任何东西好! -)。
  • 或者测试套件和/或其工具与一堆其他 Facebook 基础设施的耦合如此之深,以至于他们无法证明提供经过清理的测试套件的努力是合理的。
【解决方案2】:

Tornado 是一个很好的 web 框架,它看起来像 twisted,但没有 twisted 的错误修复或功能。我不久前做了a port to twisted,基本上只是删除了代码。

其中一些功能非常很重要。例如,如果你在做 WSGI,你就是在阻塞一个非阻塞的 web 框架。坏事会发生。 Twisted 的异步 Web 框架也有一个 WSGI 容器,但它使用deferToThread 来防止它阻塞其他请求。仍然不是扩展应用程序的正确方法,但它分崩离析的速度要慢得多。

【讨论】:

    【解决方案3】:

    首先,我想为一个过时的话题的答案道歉, 但是一旦我通过谷歌找到了这个话题,我想更新重要信息!

    在 Tornado 2.0 中增加了对 Python 3.2 的支持!

    https://github.com/facebook/tornado/blob/master/setup.py

    http://groups.google.com/group/python-tornado/browse_thread/thread/69415c13d129578b

    【讨论】:

    • 这正是 SO 比论坛更好的原因。主题不会过时,您可以更新它们。一旦 2.0 发布,问题本身实际上应该更新以注意这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多