У меня есть приложение Django, которое должно вызвать psql. Я делаю это в сельдерейной нити, которая выглядит так:
@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, кажется, распознает хост. По крайней мере, тогда он запрашивает пароль.
Есть идеи, как решить эту проблему?