Задать вопрос
@Kungusto

Getaddrinfo failed: почему Python не может найти localhost?

Проблема
При попытке подключения к PostgreSQL с использованием asyncpg возникает ошибка: socket.gaierror: [Errno 11001] getaddrinfo failed

Что важно:
1. Параметры подключения (user, password, db, host, port) — верные
2. PostgreSQL работает и доступен (в Docker-сети всё ок)
3. Подключение снаружи (например, из PowerShell или миграциями через Alembic) — вызывает ошибку
4. Файл hosts содержит оба нужных значения:
127.0.0.1 localhost
::1 localhost

Мои гипотезы
1. DNS или разрешение имён внутри Python/asyncpg
2. Возможно, getaddrinfo() не может получить IP по имени localhost даже с корректным hosts
3. Проблема может быть связана с конфигурацией самой системы или Python 3.12
4. Баг в Windows DNS-стеке или антивирус/фаервол

❓Вопрос
Как можно исправить ситуацию, когда localhost не резолвится корректно в asyncpg, несмотря на корректный hosts?
Какие есть способы заставить getaddrinfo() работать корректно в Windows + Python 3.12?
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@Zerg89
PostgreSQL работает и доступен (в Docker-сети всё ок)

Если я правильно понял у вас postgres в докер контейнере
Тогда вам не на localhost надо подключатся а к ip контейнера или по днс имени контейнера
Localhost это внутренний адрес самой машины а вам надо подключится к виртуальной сети этой машины
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы