如何使用aws lambda python查询异步postgres



在我的情况下,我使用pycopg2客户端,我需要创建一个表,但它给了我一个超时错误,这显然是因为该表需要很长时间,并且超过了15分钟的限制。

为了我的小目的,我找到了以下文档,这些文档对我的psycopg文档有很大帮助

我将离开小的实现,注意我已经将连接分离为aconn,因为它的工作方式与正常连接不同,例如它不使用提交

小细节是连接线中的async_ =True

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 

最新更新