2
我在使用Python中的psycopg2執行長時間查詢時遇到問題。 當查詢時間超過180秒時,腳本執行會長時間掛起。我使用Python 3.4.3
和psycopg2 2.6.1
。psycopg2光標在查詢時間過長時掛起
這裏有樣品重現該問題:
import psycopg2
cnn = psycopg2.connect(
database='**********',
user='**********',
password='**********',
host='**********',
port=5432,
)
print("Connected")
cursor = cnn.cursor()
seconds = 5
print("Sleep %s seconds"%seconds)
cursor.execute("SELECT pg_sleep(%s);"%seconds)
print("Exit.")
腳本正常工作時,查詢耗時5秒:
$python3 /tmp/test.py
Connected
Sleep 5 seconds
Exit.
但是,當秒數爲180和更大,線路cursor.execute
掛起以下指令和執行指令從未執行:
import psycopg2
cnn = psycopg2.connect(
database='**********',
user='**********',
password='**********',
host='**********',
port=5432,
)
print("Connected")
cursor = cnn.cursor()
seconds = 180
print("Sleep %s seconds"%seconds)
cursor.execute("SELECT pg_sleep(%s);"%seconds)
print("Exit.")
這是輸出:
$python3 /tmp/test.py
Connected
Sleep 5 seconds
<Never exit>
有沒有人知道如何解決這個問題? 謝謝。
但不應一'QueryCanceledError如果達到了statement_timeout,會引發''InternalError'',因爲它會終止查詢? – tscizzle