Python psycopg2 超时

问题描述 投票:0回答:1

我有一个大问题: 我的 python 软件运行所在的服务器的路由器似乎存在一些硬件问题。大约每三次连接到数据库就会成功。因此,psycopg2.connect() 可能需要长达 5 分钟的时间才会出现超时异常。

2014-12-23 15:03:12,461 - ERROR - could not connect to server: Connection timed out
    Is the server running on host "172.20.19.1" and accepting

这是我正在使用的代码。

# Connection to the DB
try:
    db = psycopg2.connect(host=dhost, database=ddatabase,
                          user=duser, password=dpassword)
    cursor = db.cursor(cursor_factory=psycopg2.extras.DictCursor)

except psycopg2.DatabaseError, err:
    print(str(err))
    logging.error(str(err))
    logging.info('program terminated')
    sys.exit(1)

我尝试为查询添加一些超时,但这没有帮助,因为连接根本没有建立。

有没有办法,当无法建立连接时,我可以立即停止程序?

python postgresql connection timeout psycopg2
1个回答
85
投票

connect
函数中使用关键字参数语法时,可以使用任何
libpg
支持的连接参数。其中有
connect_timeout
以秒为单位:

db = psycopg2.connect (
    host=dhost, database=ddatabase,
    user=duser, password=dpassword,
    connect_timeout=3
)

http://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-PARAMKEYWORDS

http://initd.org/psycopg/docs/module.html

连接超时会引发

OperationalError
异常。

© www.soinside.com 2019 - 2024. All rights reserved.