[Stackless] announcing Concurrence Framework
henkpunt at gmail.com
Fri Jan 16 18:00:41 CET 2009
You guessed right :-)
Anyway, concurrence already contains a 'asynchronous' implementation
of a driver for MySQL,
so there is no threading issues there..., all the communication is
handled async in the background with
the database (it is just a tcp/socket connection afterall) so no
threads used. high-level API is DBAPI compatible (blocking style).
I currently use concurrence in combination with SQLAlchemy/MySQL with
no threads and this works fine...
For any other db, 2 possibilities:
1) implement async driver for given database
2) implement some wrapper for existing DBAPI drivers using OS-level
threads in the background... (this is what Twisted does)
On Fri, Jan 16, 2009 at 12:30 AM, Andreas Kostyrka <andreas at kostyrka.org> wrote:
> Am Mon, 12 Jan 2009 16:22:37 +0100
> schrieb "Henk Punt" <henkpunt at gmail.com>:
>> 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
>> 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
> I just noticed that there is no mailing list nor a way to contact you
> from the google page. OTOH, perhaps the usernames displayed map 1:1 to
> gmail.com email addresses? *wonder*
> What I wondered is, if concurrence can handle real threads too? I
> wondered because DB connections can take quite a bit of time to
> establish, so I wonder how you deal currently with that?
More information about the Stackless