[Stackless] announcing Concurrence Framework
henkpunt at gmail.com
Sun Jan 18 20:35:55 CET 2009
Yes I know of eventlet,
It uses the same underlying idea as Concurrence (provide sync APi to
async IO by combing event multiplexer
with user level threads (or co-routines in the case of greenlets).
I do think the scope of Concurrence is much bigger. Concurrence will
try to provide many useful protocols (internet, database)
in a coherent framework. From what I can see, eventlet just provides a
socket implementation, and no further protocol support.
You might want to think of Concurrence having a similar scope to
Twisted, but with a saner programming model (actually the first
of Concurrence used to be called 'Twistless'... :-)
As far as performance goes, I you read the eventet docs, at some
point they claim that greenlets are faster than stackless
(for running eventlet).
As far as I know stackless should be faster, if not, what is the
point?, we would all be using greenlet on top of normal python.... But
actually I think nobody
ever did any proper benchmarking on this ....
On Fri, Jan 16, 2009 at 7:03 PM, Denis Bilenko <denis.bilenko at gmail.com> wrote:
> I spent some time with eventlet, a networking library built on top of
> greenlet (for CPython).
> It has the exact same goals as you stated below and aims to provide
> the same set of services.
> Here's an example that can get you feel of the library
> I wonder if there are any reasons to prefer Concurrence to Eventlet.
> Is there anything that greenlets fundamentally cannot do that Stackless can?
> Is there something Concurrence can do that Eventlet will never be able to?
> Maybe there's stability/performance difference?
> On Mon, Jan 12, 2009 at 9:22 PM, Henk Punt <henkpunt at gmail.com> wrote:
>> I would like to announce the availablility of the 'Concurrence
>> Framework'. (http://concurrence.googlecode.com)
>> Basically it is a library build on top of Stackless that enables the
>> easy creation of high performance network servers
>> (http servers, chat servers, comet servers etc etc).
>> It is similar in scope to the Twisted framework, but it uses a
>> Lightweight-processes-with-message-passing approach to concurrency as
>> opposed to Twisteds event-driven model.
>> I have created this framework out of frustration with Twisteds model.
>> After working for some years with Twisted it has become apparent to me
>> that the event-driven model for IO/socket programming although very
>> performant, quite easily leads to difficult to maintain program
>> Instead I would prefer to program in a 'blocking' style like you would
>> traditionally do with threads. At the same time I still would like to
>> the performance and lack of threading issues of event-driven IO.
>> This is what the Concurrence Framework provides... (trough Stackless
>> and libevent)
>> Most notably it already includes:
>> - a Socket API,
>> - a DBAPI 2.0 compatible implementation of a MySQL Driver
>> - an implementation of a HTTP1.1/WSGI compliant webserver.
>> Some components are implemented in Pyrex for speed (low level
>> interface to libevent, IO buffer interface, low-level MySQL stuff).
>> The code is currently quite usable, but some interfaces might still
>> change as I gather feedback from the community.
>> In the following weeks I will try to finalize the core documentation
>> and I will create a proper website to host it.
>> In the meantime, anyone interested can checkout the code from coogle code:
>> svn checkout http://concurrence.googlecode.com/svn/trunk/ concurrence
>> from there please follow the instructions in INSTALL.TXT (currently
>> Linux/MacOSX only).
>> Documentation can be found in doc/_build/html/index.html, but this is
>> a work in progress...
>> Examples used in the documentation can also be found in the examples directory.
>> The unittests in the test directory could also provide some guidance
>> on how to use the framework.
>> Issues/feedback can be mailed to me or you can add an issue on
>> Henk Punt
>> Stackless mailing list
>> Stackless at stackless.com
More information about the Stackless