更新:经过与Py3的艰苦奋斗,包括编写自己的异步Web服务器(根据Dave Beazley的演示),我最终放弃了Python(以及大量我的代码)-: 转而选择在NodeJS上运行CoffeeScript。看看这个:GitHub(这里你会发现95%的有趣代码),npm(包管理器非常用户友好;告别了,easy_install
,你从未做到你的名字),一个非常庞大的模块库(几乎每天都有大量新内容发布),一个庞大而充满活力的社区,开箱即用的异步HTTP和文件处理...,所有这些(感谢V8)以光速的三分之一的速度运行 - 还有什么不喜欢的?阅读更多宣传资料:{{link7:“脚本的未来”}}(幻灯片托管由SpreeWebdesign提供)。
有一些基本的例子,比如相当详细和有价值的文章如何使用Linux epoll with Python,还有一个名为stacklessexamples的Google代码项目,其中包含一些有价值的信息(但没有Python 3.x兼容的代码)。
经过多天在网上进行研究并尝试将我迄今为止找到的碎片汇集在一起后:是否有人知道一个相当可用的异步HTTP库?它不必符合WSGI标准(我对此不感兴趣)。
服务器部分应该能够处理多个非阻塞的HTTP请求(可能还要做一些HTTP头处理的基础工作);HTTP客户端部分应该能够以非阻塞的方式通过HTTP请求检索网络内容(也要进行基本的头处理,但不会像授权之类的高级操作那样复杂)。
到目前为止,我的研究表明非阻塞HTTP是在无栈、协同调度环境中唯一有意义的方法;在Stackless Python 3中,由于标准库的select epoll(在Py2.6中引入;某些解决方案更喜欢libevent,但这意味着另一个障碍,因为pyevent项目似乎已经停止在Py2.5上开发),非阻塞HTTP是可行的;但遗憾的是,它仍然不是家喻户晓的东西,大多数人仍然依赖于阻塞式HTTP。
现在看来,我需要学习套接字编程的基础知识,并自己编写HTTP服务器/客户端库。我仍然对这项任务感到犹豫,因为我在这个领域几乎没有背景,很可能会“重蹈覆辙”。
我会很高兴得到任何相关的指导。我非常喜欢使用select.epoll
的解决方案;我记得它比旧的asyncore
更具可扩展性(但也许有人对此有更精确的数据)。作为最低要求,解决方案应该在Ubuntu 9.10上运行。
aifc
和sndhdr
这样的东西,利用这些空间来做更有用的事情? - flow