Однако, когда я запускаю сценарий для нескольких URL-адресов, я сталкиваюсь с проблемой, при которой программа зависает на запросе и не учитывает настройки таймаута. Это приводит к тому, что скрипт зависает на неопределенный срок, особенно при очистке большого количества URL-адресов.
Вот фрагмент кода, который я использую:
Код: Выделить всё
import requests
urls = [
"http://example.com",
"http://anotherexample.com",
# ... more URLs
]
HEADERS={"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"}
for url in urls:
try:
response = requests.get(url, headers=HEADERS, timeout=(10, 10))
if response.status_code == 200:
# Extract emails (simplified for demonstration)
print(f"Emails from {url}: ", response.text)
except requests.exceptions.Timeout:
print(f"Timeout occurred for {url}")
except requests.exceptions.RequestException as e:
print(f"Error occurred for {url}: {e}")
Принятые меры< /strong>:
- Пытался уменьшить значения тайм-аута до (5, 5), но столкнулся с той же проблемой.
Убедился, что URL-адреса действительны и доступен.
Мои вопросы:
- Почему в этом случае тайм-аут может работать не так, как ожидалось?
Как обеспечить, чтобы скрипт не зависал бесконечно при парсинге большого количества URL-адресов?
Окружающая среда:
Версия Python: 3.10.10
запрашивает версию: 2.32.3
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-requests