Я пытаюсь выполнить 3 разных запроса postgresql с другой таблицей. Для выполнения каждого запроса требуется 2 секунды. Мне было интересно, можно ли одновременно запускать все 3 запроса, чтобы я мог сэкономить 4 секунды. Я попытался использовать асинхронную функцию pyscopg2
, но она возвращает результат последнего запроса. Может ли кто-нибудь указать, что я делаю неправильно?Как использовать асинхронную функцию pyscopg2?
import select
import psycopg2
import psycopg2.extensions
def wait(conn):
while 1:
state = conn.poll()
if state == psycopg2.extensions.POLL_OK:
break
elif state == psycopg2.extensions.POLL_WRITE:
select.select([], [conn.fileno()], [])
elif state == psycopg2.extensions.POLL_READ:
select.select([conn.fileno()], [], [])
else:
raise psycopg2.OperationalError("poll() returned %s" % state)
aconn = psycopg2.connect(
dbname=pg_name,
user=pg_username,
host=pg_host,
password=pg_password,
async=1)
wait(aconn)
acurs = aconn.cursor()
acurs.execute(
"SELECT 1;"
"SELECT ST_Length(ST_GeomFromText"
"('LINESTRING(743238 2967416,743238 2967450)',4326));"
"SELECT 3;"
)
wait(acurs.connection)
result = acurs.fetchall()
print result
Это только печатает: "результат": [[3]]