'How query asynchronous postgres with aws lambda python?

In my case I use the pycopg2 client and I need to create a table but it gives me a time out error, this is obviously because the table takes a long time and exceeds the 15 min limit.



Solution 1:[1]

For my little purposes I found the following documentation that helped me a lot psycopg doc

I will leave the small implementation, note that I have separated the connection as aconn because it works differently than the normal connection, for example it does not use commit

The little detail is async_ =True in the connection line

import select 
import psycopg2

def wait(conn): 
    while True:
        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)


db_host = db_secret["host"]
db_name = db_secret["dbname"]
db_user = db_secret["username"]
db_pass = db_secret["password"]

aconn = None
stringConn = "dbname='%s' user='%s' host='%s' password='%s'" % (db_name, db_user, db_host, db_pass)
  
aconn = psycopg2.connect(stringConn , async_ =True)
wait(aconn)
    

acursor = aconn.cursor()
query ="CREATE TABLE CHEMA.TABLE  AS  SELECT * FRO BLA  "

acursor.execute(query, params={})
wait(acursor.connection)
aconn.close()
#END AND EXIT 

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Cristián Vargas Acevedo