MagicStack / MagicStack/asyncpg
Special character in password raise timeout exception
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 8.1k
- Forks
- 468
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
- asyncpg version: 0.25.0
- PostgreSQL version: 10.6
- Do you use a PostgreSQL SaaS?: no
- Python version: 3.6.12
- Platform: UNIX
- Do you use pgbouncer?: no
- Did you install asyncpg with pip?: yes
It seems that introduction of some special characters (here the ²) in password breaks the code: it hangs until connection timeout is reached. Even if the password/user/db are wrong. A wrong hostname (eg unavailable or without a responding 5432 port) raise an exception.
test:
conn = await asyncpg.connect(f'postgres://a@{host}/b', password='abc²def', timeout=10)
Traceback (most recent call last):
File "./....py", line 152, in <module>
loop.run_until_complete(a())
File "/usr/lib64/python3.6/asyncio/base_events.py", line 488, in run_until_complete
return future.result()
File "./...py", line 134, in a
conn = await asyncpg.connect(f'postgres://a@{host}/b', password='abc²def', timeout=10)
File "~/.local/lib/python3.6/site-packages/asyncpg/connection.py", line 2102, in connect
max_cacheable_statement_size=max_cacheable_statement_size,
File "~/.local/lib/python3.6/site-packages/asyncpg/connect_utils.py", line 895, in _connect
raise last_error
File "~/.local/lib/python3.6/site-packages/asyncpg/connect_utils.py", line 888, in _connect
record_class=record_class,
File "~/.local/lib/python3.6/site-packages/asyncpg/connect_utils.py", line 781, in _connect_addr
return await __connect_addr(params, timeout, True, *args)
File "~/.local/lib/python3.6/site-packages/asyncpg/connect_utils.py", line 831, in __connect_addr
await compat.wait_for(connected, timeout=timeout)
File "~/.local/lib/python3.6/site-packages/asyncpg/compat.py", line 66, in wait_for
return await asyncio.wait_for(fut, timeout)
File "/usr/lib64/python3.6/asyncio/tasks.py", line 362, in wait_for
raise futures.TimeoutError()
concurrent.futures._base.TimeoutError
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el punto de entrada asyncpg.connect y el flujo de conexión mostrado en asyncpg/connect_utils.py, incluido compat.py. Reproduce el caso de la contraseña con las versiones de PostgreSQL y Python proporcionadas, compáralo con credenciales no válidas y con un host no disponible, y verifica que el caso con caracteres especiales informe del resultado de la conexión o la autenticación en lugar de agotar el tiempo de espera inesperadamente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- postgresql, python
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100