DatabaseError: execute used with asynchronous query

瀏覽次數:2,650 次
跳到第一則未讀訊息

j_syk

未讀,
2012年1月20日 上午9:46:472012/1/20
收件者: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

未讀,
2012年2月28日 上午8:34:032012/2/28
收件者: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

未讀,
2012年2月28日 上午10:25:262012/2/28
收件者: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

未讀,
2012年3月9日 晚上8:52:112012/3/9
收件者: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
回覆所有人
回覆作者
轉寄
0 則新訊息