Skip site navigation (1) Skip section navigation (2)

Re: psycopg and gevent with pgbouncer

From: Daniele Varrazzo <daniele(dot)varrazzo(at)gmail(dot)com>
To: Marko Kreen <markokr(at)gmail(dot)com>
Cc: Raoul Duke <knevcher(at)gmail(dot)com>, psycopg(at)postgresql(dot)org
Subject: Re: psycopg and gevent with pgbouncer
Date: 2011-10-06 10:31:04
Message-ID: (view raw, whole thread or download thread mbox)
Lists: psycopg
On Thu, Oct 6, 2011 at 9:54 AM, Marko Kreen <markokr(at)gmail(dot)com> wrote:
> On Thu, Oct 6, 2011 at 10:45 AM, Raoul Duke <knevcher(at)gmail(dot)com> wrote:

>> 2. I use psycopg simple connection pooler :
>> pool = SimpleConnectionPool(1, 3, connection_string)
>> if I add async option:
>> pool = SimpleConnectionPool(1, 3, connection_string, async=1)
>> I've got an error, than I can't understand:
>>   File "/usr/lib/pymodules/python2.6/sqlalchemy/engine/", line 940,
>> in __create_execution_context
>>     self._handle_dbapi_exception(e, kwargs.get('statement', None),
>> kwargs.get('parameters', None), None, None)
>>   File "/usr/lib/pymodules/python2.6/sqlalchemy/engine/", line 931,
>> in _handle_dbapi_exception
>>     raise exc.DBAPIError.instance(statement, parameters, e,
>> connection_invalidated=is_disconnect)
>> OperationalError: (OperationalError) asynchronous connection attempt
>> underway None [{}]
>> Do I understand that when using the gevent, I have to use async option?
> I leave that to psycopg guys to answer.

An async connection it is not usable just after it's been created:
it's in an half baked state where poll() returns POLL_READ or
POLL_WRITE until the client and the server have completed the
asynchronous login handshake. The protocol must be pushed by the
client as described in
The wait loop should be somewhere after the connection creation and
before the usage: I don't know if the libraries you are using allow

Note that if you are using gevent and not twisted you may use the
green mode instead
that provides you async connections whose behaviour is entirely
equivalent to the blocking one (they block a single greenlet and
schedule the other to go). I suspect you should try them instead of
the raw async mode.

-- Daniele

In response to


psycopg by date

Next:From: Daniele VarrazzoDate: 2011-10-06 10:37:07
Subject: Re: Hstore array implementation.
Previous:From: Daniele VarrazzoDate: 2011-10-06 10:16:51
Subject: Re: Hstore array implementation.

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group