【问题标题】:What networking libraries/frameworks exist for Python?Python 有哪些网络库/框架?
【发布时间】:2009-09-23 22:06:21
【问题描述】:

我想知道 Python 有哪些好的网络库/框架。

请提供该库的标准 API 文档的链接,或许还可以提供一个不错的教程链接以开始使用它。

关于它的优点/缺点的一两条评论也很好。

【问题讨论】:

标签: python networking frameworks


【解决方案1】:

标准库有asyncore,它适用于非常简单的东西,如果你更喜欢做线程的东西,还有SocketServer 东西。还有Twisted,但如果你不习惯事件驱动的 IO,进入的门槛有点高。如果您追求 Web 框架,CherryPy 是一个好的开始,如果您正在寻找功能更全面的东西,DjangoTurboGears

【讨论】:

    【解决方案2】:

    考虑Twisted 框架。优势:

    • 固体反应器实现
    • 支持几乎所有常见的网络协议
    • 有据可查

    缺点:

    • 它是 巨大的
    • 异步 API 需要一些时间来适应(但是一旦你熟悉了,这些东西实际上就很实用了)

    CPython 本身带有一个很小的reactor/socket package。不过,我自己从来没有用过。

    【讨论】:

    • twisted 并不大,这是一个误解,我无法理解它的来源。我刚刚在我的扭曲副本中添加了 .py 文件的大小,结果只有 9.7MB。这是非常小,考虑到当今销售的大多数硬盘驱动器 >= 500GB。即使是手机也很容易获得。不到 10MB 的空间,我就得到了几乎所有在野外发现的协议的支持。我可以删除它的一部分以使其更小,但我节省的几 MB 几乎不值得。请澄清您对 huge 的含义。
    • 就编码或理解它所花费的时间、它提供的功能数量或你可以使用它的微妙不同方式的数量而言,这是相当大的。
    • 巨大如巨大,不一定如文件大小巨大。如果磁盘空间确实是个问题,那么几乎任何优化器都可以剥离该库。
    【解决方案3】:

    Twisted 是所有 Python 网络框架中最完整、最复杂的。

    它非常成熟且非常完整,但它的学习曲线很陡峭。

    Documentation here; FAQ here.

    【讨论】:

      【解决方案4】:

      如果您想构建/操作自己的数据包,也有 Scapy :)

      用法非常简单,它可以让你对数据包做任何你想做的事情 它是多平台的。

      项目页面:http://www.secdev.org/projects/scapy/

      文档:http://www.secdev.org/projects/scapy/doc/

      例如:http://www.secdev.org/projects/scapy/demo.html

      【讨论】:

        猜你喜欢
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多