поступить
предположим есть функция, которая как аргумент принимает ссылку на сайт, а далее проверяет заблокирован ли этот сайт в определенном сервисе, если сайт заблокирован, то что возвращать True или False?
Зависит от того, как ты поставил задачу. На что проверяешь?
А если недоступен/ошибка?
это уже другая функция
Это респонз разными хендлерами типа обрабатываешь или что? Странный подход) Может быть это тот случай когда у тебя должен быть класс обработчик респонза, который возвращает датакласс с собранной инфой?)
Я это всё к тому что надо не отдельный кейс смотреть, а в целом какую инфу предполагается собрать - иначе о читаемости и логичности рассуждать как-то странно)
суть в том чтобы во-первых, получить 200 код, если он есть проверить заблокирован ли домен в определенных сервисах
is_not_sth который возвращает False это как правило говнокод потому что в игре уже есть оператор not Поэтому только is_sth и возвращать True
Обычно же возвращают коды. Аля 200 доступен. 403 заблокирован. Хз как временно недоступен
Ну подожди я к тому что в некоторых случаях просто ответа не будет, или будут другие исключения) оно же должно зарезолвиться для начала по днс Потом ответа может и не быть - будет просто таймаут Есть ConnectionRefused, а это не 403)
Нуу вот например (примеры кода не огонь, просто первое что попалось) https://stackoverflow.com/questions/40145631/precisely-catch-dns-error-with-python-requests
иногда я жалею что задаю вопросы 🤨
тогда получается что соединение между клиентом и сервером, по http, нужно проверять с более низких уровней? 🧐
Можно так, да, можно и в обработке исключений. Это слишком сильно зависит от тз и конкретных кейсов (впринципе, в некоторых случаях имхо было бы уместно предварительно отсеять значительную часть низкоуровневыми проверками).
я так понимаю на низком уровне, если речь идет про страничку в интернете, этим займется браузер
а если до не смог достучаться то цели?
У requests по дефолту не вылетает исключения для таймаута, потому что таймаута нет как такового, он просто намертво встанет и все. Ручками пропиши там 30 секунд таймаута например и отлавливай исключение нужное
ну хорошо, таймаут поймал. А дальше?
Отлавливаешь обрабатываешь
он не встанет намертво. Зависит от сервера, напимер.
Абсолютный, учу пайтон, домашка, разбираю вопрос
перечитай свой ответ
Ну да, если сервер ответит то естественно не встанет
Обсуждают сегодня