DatabaseError: execute used with asynchronous query

2,650 views
Skip to first unread message

j_syk

unread,
Jan 20, 2012, 9:46:47 AM1/20/12
to Django users
I was testing one my apps today with a form that features a drop-down
field that initiates a json lookup for additional detail. You choose a
location, it populates address fields. It's been working for weeks.
Today, when I clicked an entry, the target detail field didn't change.

I have debug off, so instantly I feel my phone buzz and I've been sent
a http500 report e-mail with the following message-


DatabaseError: execute cannot be used while an asynchronous query is
underway


I can't seem to reproduce the error, it's never happened before, and I
haven't changed this piece of code for a while, so I doubt it's
something new.

I'm willing to write it off as a fluke, but at the same time I'd like
to learn more and the search results on the topic don't seem good.

Server setup is Django 1.3.1, Gunicorn 0.13 with geventlet processes,
Nginx 0.7, postgres 8.4.8,
That particular page was using Jquery and a .getJSON call to a json
output produced by a django view which calls a basic query.

What should I know about the "asynchronous query" error? Are there
ways to prevent it? Should I be worried?

Daniel Svonava

unread,
Feb 28, 2012, 8:34:03 AM2/28/12
to django...@googlegroups.com
Hi, this same error happened to me as well. My setup:

Django==1.3.1
gevent==0.13.6
greenlet==0.3.4
gunicorn==0.13.4
psycopg2==2.4.4

I use this function to make psycopg2 "green" (in the gunicorn config):

worker_class = "gevent"
def def_post_fork(server, worker):
    from psyco_gevent import make_psycopg_green
    make_psycopg_green()
    worker.log.info("Made Psycopg Green")
post_fork = def_post_fork

This is making me worried of using the Gunicorn+Gevent+psycopg2 combo.

Cheers,
Daniel

j_syk

unread,
Feb 28, 2012, 10:25:26 AM2/28/12
to django...@googlegroups.com
As far as I remember, I quickly switched back to 'sync' worker type (the default) for the app which had this problem. I've never seen the error again. I have another project running on eventlet, still with gunicorn, postgres, and psycopg2. Never have had any problems with that one. So maybe it is a problem with gevent.

I'd like to hear from someone who has had success with gevent.

Daniel Svonava

unread,
Mar 9, 2012, 8:52:11 PM3/9/12
to Django users
Just to wrap up, I describe a fix here:
http://www.manasupo.com/2012/03/geventpsycopg2-execute-cannot-be-used.html

Cheers,
Daniel
Reply all
Reply to author
Forward
0 new messages