2017-01-30 15 views
1

ソフトウェアが特定のPostgre-DBに接続している場合、GUIにボタンを追加したいと思います。私は小さなテスト関数を書いた:DBに接続できればTrueを返し、そうでなければFalseを返す。Postgres-DBの接続をテストする

コードは機能しますが、接続がない場合(私はただインターネットケーブルを抜き、それ以外の変更はありません)、単に に時間がかかります。 接続がない場合にコードを高速化する手助けをしてもらえますか?コメントの

import psycopg2 

def postgres_test(): 

    try: 
     conn = psycopg2.connect("dbname='mydb' user='myuser' host='my_ip' password='mypassword'") 
     conn.close() 
     return True 
    except: 
     return False 
+0

タイムアウトは、接続が存在しない場合のために考えられる理由であるならば、私はあなたが任意のより良いを行うことはできません怖い、あなたはタイムアウトが終了するまで待たなければなりません。 –

+1

https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-PARAMKEYWORDSに記載されているように、 'connect()'の呼び出しにタイムアウト時間を秒単位で渡すことができます。あなたが探しているものを満たすだろうか? – user2027202827

答えて

0

ありがとう:

は、ここに私の簡単なテスト機能です。そしてはい、タイムアウトに関連していました。ここで

は私の高速なコードです:

import psycopg2 

def postgres_test(): 

    try: 
     conn = psycopg2.connect("dbname='mydb' user='myuser' host='my_ip' password='mypassword' connect_timeout=1 ") 
     conn.close() 
     return True 
    except: 
     return False 
+0

接続が多少遅れていると、誤った肯定的な結果になることがあります。いずれにしても、ユーザはそのボタンを再度押して再確認することができる。実際には、DBがローカルの場合、答えはとにかく速くなければならないので、誤検出は起こりにくいでしょう。あなたはあなた自身の答えを受け入れるかもしれません。 –

関連する問題