psql を呼び出す必要がある Django アプリケーションがあります。私は次のようなセロリスレッドでこれを行います:
@task()
def insert_sqldump_threaded(username, database, file):
host = database.server.db_address
work = subprocess.Popen([settings.PSQL,
"-f%s" % file,
"-d%s" % database.db_name,
"-h%s" % host,
"-U%s" % settings.DB_ADMIN_USER
], env = {'PGPASSFILE': settings.DB_PASSFILE}
)
work.wait()
return work.returncode
私の開発サーバーでは、PGPASSFILE は次のようになります。
localhost:5432:*:postgres:postgres
これで問題ありません。
問題は、この関数が呼び出されたときに得られるのは、psql からのエラーだけです。
psql: could not translate host name "localhost" to address: Unknown server error
そして今、それは本当に奇妙になりますが、「env」変数を送信しないと、psql はホストを認識しているようです。少なくとも、パスワードを要求します。
これを解決する方法についてのアイデアはありますか?