Eventlet或gevent或Stackless + Twisted,Pylons,Django和SQL Alchemy。
Eventlet或gevent或Stackless + Twisted,Pylons,Django和SQL Alchemy。
我们在需要大量异步io的应用程序中广泛使用Twisted。在一些情况下,由于计算机绑定,我们会生成一组进程来完成工作,并且还有一个系统来管理这些进程在多个服务器上的分布 - 这全部都是在Twisted中完成的。效果很好。问题是让新团队成员快速上手很困难。在Twisted中编写异步代码需要一个近乎垂直的学习曲线。这就好像人类自然地不会以这种方式思考一样。
我们正在考虑采用混合方法。也许保留Twisted中的xmlrpc服务器部分和进程管理,而将其他部分实现为在某种程度上看起来是同步的代码,但实际上并非如此。然而,我更喜欢显式而不是隐式,所以我还需要再考虑一下。总之,关于greenlets - 这些东西效果如何?所以有Stackless,从我的Gallentean头像可以看出,我对CCP旗舰游戏EVE Online的巨大成功有着亲身体会。那Eventlet或者gevent呢?现在只有Eventlet与Twisted一起工作。然而,gevent声称由于它不是纯Python实现,而是依赖于libevent,所以更快。它还声称具有较少的怪癖和缺陷。gevent由我所知的一个人维护。这让我有点担心,但所有伟大的项目都是这样开始的,所以...然后是PyPy - 我甚至还没有读完关于它的东西 - 只是在这个帖子中看到了它:Stackless的缺点。
真让人困惑 - 我想知道该怎么办 - 听起来Eventlet可能是最好的选择,但它真的足够稳定吗?有没有人在这方面有任何经验?我们应该选择Stackless,因为它已经存在并且经过验证的技术,就像Twisted一样 - 而且它们很好地配合使用。但是我讨厌必须使用另一个Python版本来做这个。该怎么办...
然而,这篇有些讨厌的博客文章对我来说说中了要害:成年人的异步IO。我不明白Twisted被说成像Java的评论,因为对我来说,Java通常是在线程思维模式下使用的,但无论如何,如果那个猴子补丁的事情确实就像那样工作,那就太棒了。真是太棒了!