Eventlet或gevent或Stackless+Twisted、Pylons、Django和SQL炼金术

2024-05-13 02:36:21 发布

您现在位置:Python中文网/ 问答频道 /正文

对于需要大量异步io的应用程序,我们正在广泛使用Twisted。有些情况下,东西是cpu绑定的,为此,我们生成一个进程池来完成工作,并有一个系统来管理这些跨多个服务器-所有这些都在Twisted中完成。效果很好。问题是很难让新成员跟上进度。用Twisted编写异步代码需要近乎垂直的学习曲线。就好像人类的思维方式不自然。

我们也许在考虑一种混合的方法。也许将xmlrpc服务器部分和进程管理保持在Twisted中,并在代码中实现其他内容,这些内容至少在某种程度上看起来是同步的,而不是这样的。再说一遍,我喜欢显式的,而不是隐式的,所以我得多考虑一下。不管怎么说,在greenlets上-这些东西有多管用?所以这里是无堆叠的,正如你可以从我的加伦特化身中看到的,我很清楚它在中国共产党旗舰游戏EVE在线游戏中的巨大成功。Eventlet或gevent呢?现在只有Eventlet可以处理Twisted。然而,gevent声称速度更快,因为它不是一个纯python实现,而是依赖于libevent。它也声称有较少的特质和缺陷。gevent据我所知,它是由一个人维护的。这让我有点担心,但所有伟大的项目都是这样开始的,所以。。。还有PyPy-我甚至还没有读完这篇文章-只是在这篇文章中看到了:Drawbacks of Stackless

如此混乱-我想知道该怎么办-听起来Eventlet可能是最好的选择,但它真的足够稳定吗?有人有经验吗?我们是否应该采用Stackless,而不是像以前那样,它是经过验证的技术——就像Twisted一样——而且它们确实很好地协同工作。但我还是讨厌有一个单独的Python版本来完成这项工作。怎么办。。。。

这篇有点令人讨厌的博客文章给了我一个沉重的打击:Asynchronous IO for Grownups我不明白扭曲是像Java一样的评论,对我来说,Java通常是你在线程思维中的位置,但不管怎样。尽管如此,如果猴子补丁真的像那样工作,然后哇。哇哦!


Tags: 代码io服务器应用程序游戏内容进程twisted
3条回答

回答你的部分问题-如果你看看http://speed.pypy.org,你会发现在PyPy上使用twisted可能会给你一些加速。这当然取决于你的工作量,但可能值得一看。

干杯,
菲哈尔

您可能要签出:

Eventlet和gevent并不能与Stackless进行真正的比较,因为Stackless附带了一个不知道微线程的标准库。有socket for Stackless的实现,但没有比gevent.monkey更全面的实现了。CCP不使用无堆栈的裸骨骼,它有一个称为无堆栈I/O的东西,AFAIK只是windows的,从来没有开放源代码(?)。

eventlet和gevent都可以在Stackless上运行,而不是在greenlet上运行。在某个时候,我们甚至试图作为一个GSoC project来做这件事,但没有找到一个学生。

我在eventlet和repoze.bfg的基础上构建了一个小的实时web应用程序(我很久以前就放弃了django)。我发现eventlet和monkey补丁就像Ted说的那样简单。

相关问题 更多 >