For a while I have been toying with the idea of developing/running a database (postgresql backend) driven WSGI app using an async python WSGI server such as gevent.
Now that the newer psycopg2 (>=2.2.0) drivers provide coroutine support (via a hook which makes c extension database drivers co- routine friendly) I am looking to try gevent out as soon as I can figure out how to integrate gevent and sqlalchemy. In theory it should be possible to run blocking SQLAlchemy queries in a spawned greenlet using an async DB API 2.0 driver such as psycopg2. Blocking only the greenlet handling the specific request. See the following URL for details of coroutine support in psycopg2:- http://bitbucket.org/dvarrazzo/psycogreen/wiki/Home An example of a wait call back implementation for gevent is here :- http://bitbucket.org/dvarrazzo/psycogreen/src/tip/gevent/psyco_gevent.py My question is what is a good pattern for using SQLAlchemy with a co- routine library such as gevent in a pylons based WSGI app.? For starters how do I configure the SQLAlchemy connection pool to create async connections only?. i.e. Write a custom getconn method and passing async=True to psycopg2.connect? Or pass connect_args to create_engine?. Assuming gevent spawns a greenlet to handle each WSGI request, I think SQLAlchemy should just work as usual in this situation, since the scopedSession would ensure that a different SQLAlchemy session is used for each request. Is this a reasonable assumption to make about this?. If I wanted to run multiple independent queries (each in its own greenlet) in the same pylons request, it appears I would have to explicitly create an sqlalchemy session for each greenlet instance in this case. Is this the case? Am I missing something very important here? Hopefully someone here might be able to shed some more light into all this. -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/pylons-discuss?hl=en.
