我有一个Django应用程序,需要调用psql。我在一个celery线程中执行此操作,代码如下:
在我的开发服务器上,PGPASSFILE 文件如下所示:
@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似乎会识别主机。至少此时它会要求输入密码。
有任何解决方法吗?