DNS resolver can run for longer than the given timeout
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- networking
Línea de trabajo
Comienza en deliverability.py, en la llamada a dns_resolver.resolve(domain, "MX"), y sigue cómo se pasa el tiempo de espera configurado cuando check_availability está habilitado. Reproduce o investiga el bucle del resolver y el comportamiento de sleep descritos en el issue. Se considera terminado cuando la resolución DNS no se ejecuta más allá del tiempo de espera indicado y se conserva el comportamiento existente de deliverability.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
It's very hard to reproduce, we found the problem because we have a 60s timeout for our web server that we kept busting, even with email-validator's default 15s timeout.
Disabling check_availability solved our problem.
The problem
The problem lies within:
response = dns_resolver.resolve(domain, "MX")
( https://github.com/JoshData/python-email-validator/blob/main/email_validator/deliverability.py#L40 )
While debugging, what I can see is that the resolver goes through a loop, and only checks the timeout between calls. It also does some time.sleep()
That means that if a call or a sleep is longer than the timeout, it doesn't get interrupted and can thus run for longer
The solution
Using signal, we could interrupt the process. See https://stackoverflow.com/a/494273
This package does it: https://github.com/pnpnpn/timeout-decorator
I'll try implementing the stackoverflow suggestion on my end and write back with news
- Lenguaje dominante
- Python
- Estrellas
- 1.4k
- Forks
- 140
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
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.
Más de JoshData/python-email-validator
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
JoshData/python-email-validator#164 · 5 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
JoshData/python-email-validator#160 · 8 comentarios · 2 reacciones ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
JoshData/python-email-validator#157 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
JoshData/python-email-validator#153 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
JoshData/python-email-validator#150 · 1 comentario ·
Todos los issues de JoshData/python-email-validator
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
zostera/django-bootstrap4#894 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
use-agent-os/agent-os#3276 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
NousResearch/hermes-agent#117848 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
zilliztech/memsearch#759 ·