Создайте Python-скрипт, который проверяет доступность указанного веб-сервера и отправляет уведомление на почту, если сервер недоступен. Скрипт должен выполнять проверку каждые 5 минут и отправлять уведомление только один раз, если сервер падает, а затем повторно — только когда сервер снова станет доступен.
•
python monitor.py https://example.com
— проверяет доступность сервера по адресу https://example.com
, отправляет уведомление на почту, если сервер перестаёт отвечать, и повторно уведомляет при восстановлении работы.Решение задачи
import requests
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import sys
# Настройки для отправки уведомлений
SMTP_SERVER = 'smtp.example.com '
SMTP_PORT = 587
EMAIL = '[email protected] '
PASSWORD = 'your-password'
TO_EMAIL = '[email protected] '
# Функция для отправки уведомления
def send_notification(subject, message):
msg = MIMEMultipart()
msg['From'] = EMAIL
msg['To'] = TO_EMAIL
msg['Subject'] = subject
msg.attach(MIMEText(message, 'plain'))
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls()
server.login(EMAIL, PASSWORD)
server.sendmail(EMAIL, TO_EMAIL, msg.as_string())
print(f"Уведомление отправлено: {subject}")
# Функция для проверки доступности сервера
def check_server(url):
try:
response = requests.get(url, timeout=5)
return response.status_code == 200
except requests.RequestException:
return False
# Основная функция мониторинга
def monitor(url):
server_is_down = False
while True:
is_up = check_server(url)
if is_up and server_is_down:
send_notification("Сервер восстановлен", f"Сервер {url} снова доступен.")
server_is_down = False
elif not is_up and not server_is_down:
send_notification("Сервер недоступен", f"Сервер {url} перестал отвечать.")
server_is_down = True
time.sleep(300) # Проверка каждые 5 минут
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Укажите URL сервера для мониторинга.")
sys.exit(1)
url = sys.argv[1]
monitor(url)
Please open Telegram to view this post
VIEW IN TELEGRAM
• Всё, что вы хотели знать о Django Channels
• Сборка Python проекта с uv и Docker
• DE-1. DIY ассистент на LLM
• Ваши генераторные выражения сломаны: чиним и разбираемся
• Всё, что вы хотели знать о Django Channels
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья рассматривает особенности разработки ИИ-приложений с использованием RAG, особенно для обработки данных интернет-магазинов. Анализируется отличие статистического подхода от традиционного программирования и его влияние на разработку с LLM.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье описан путь от пет-проекта до системы для трекинга транспорта: нейросети, компьютерное зрение и инструменты, позволяющие «видеть» и анализировать производственные процессы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
__name__ == "__main__"
в Python?Конструкция
if __name__ == "__main__"
определяет, выполняется ли скрипт как основная программа или импортируется в качестве модуля. Это позволяет запускать код только при непосредственном запуске скрипта, исключая его выполнение при импорте.def greet():
print("Hello from greet!")
if __name__ == "__main__":
greet() # Этот вызов выполнится только при запуске скрипта напрямую
🗣 В этом примере greet() будет вызвана, если файл запускается напрямую. Если скрипт импортируется как модуль, greet() не вызовется, сохраняя модульную структуру кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассказывается, как Okko оптимизировал рекомендации: с помощью Jaeger и Grafana выявили узкие места, улучшили работу сборщика мусора и снизили время отклика для 99% запросов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья исследует методы нечеткого поиска для больших языковых моделей, включая триграммный и фонетический анализ, косинусное и евклидово сходство. Рассматриваются преимущества и ограничения методов для работы с неструктурированными данными.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ленивый программист
Подборка каналов IT от наших друзей:
🦥 Lazy_Programmer – Для ленивых
🎬 videos_it — База видеоуроков по IT
🐧 Linux_Club — Для Linuxоидов
📔 BOOKS — Читать не перечитать
🇷🇺 our_computer — У нас как в СССР
🔐 LazySecurity — Канал по ИБ
🤩 iwannabeprogrammer — IT-мемы
🔥 floppydisky — ITUMOR
📱 codebase_frontend — Красим кнопки
➡️ LazyDevOps — Канал для дев и псов
🐈⬛️ LazyTester — Протестируй канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Напишите функцию, которая принимает список email-адресов и возвращает уникальные домены из этого списка. Домен — это часть адреса после символа
@
.["[email protected]", "[email protected]", "[email protected]", "[email protected]"]
#{"example.com", "test.com", "sample.com"}
Решение задачи
def get_unique_domains(emails):
domains = {email.split('@')[1] for email in emails}
return domains
# Пример использования:
emails = ["[email protected] ", " [email protected] ", " [email protected] ", " [email protected] "]
result = get_unique_domains(emails)
print(result) # Ожидаемый результат: {'example.com ', ' test.com ', ' sample.com '}
Please open Telegram to view this post
VIEW IN TELEGRAM