Создайте 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 = 'your-email@example.com '
PASSWORD = 'your-password'
TO_EMAIL = 'recipient@example.com '
# Функция для отправки уведомления
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
Senior Python Developer (Highload, Crypto)
Python Developer (Senior)
Senior Python-разработчик
Senior Machine Learning Engineer (Computer Vision)
Senior/Middle Data Scientist
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
Team Lead backend/Python (remote)
Python Team Lead
Python-разработчик Machine Learning / Computer Vision
Senior/Lead Backend Developer (Python)
Tech Lead (python)
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
Разработчик операций AI, Python/React
Senior Software Engineer (Python)
Middle Backend Developer (Python)
Senior Backend Developer - Python
Python Fullstack Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья исследует методы нечеткого поиска для больших языковых моделей, включая триграммный и фонетический анализ, косинусное и евклидово сходство. Рассматриваются преимущества и ограничения методов для работы с неструктурированными данными.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает список email-адресов и возвращает уникальные домены из этого списка. Домен — это часть адреса после символа
@
.["user1@example.com", "user2@test.com", "user3@example.com", "user4@sample.com"]
#{"example.com", "test.com", "sample.com"}
Решение задачи
def get_unique_domains(emails):
domains = {email.split('@')[1] for email in emails}
return domains
# Пример использования:
emails = ["user1@example.com ", " user2@test.com ", " user3@example.com ", " user4@sample.com "]
result = get_unique_domains(emails)
print(result) # Ожидаемый результат: {'example.com ', ' test.com ', ' sample.com '}
Please open Telegram to view this post
VIEW IN TELEGRAM
• Пишем Wake-on-LAN сервис на ESP8266 при помощи ChatGPT
• Необычные вкусы покупателей: что такое товарные пары и как их исследовать
• Kafka. Лучшие практики применения. Настройки Producer & Consumer
• Словари в Python: обзор и как пользоваться
• Хотите, покажу вам магию живого кода на p5py?
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет концепцию символьных и жёстких ссылок на файлы, акцентируя внимание на hard links в Windows, малоизвестных многим веб-разработчикам. В простых примерах раскрывается принцип работы ссылок и их отличия от привычных ярлыков.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает строку и проверяет, является ли она палиндромом. Функция должна игнорировать пробелы, знаки препинания и регистр букв.
"A man, a plan, a canal, Panama"
True
Решение задачи
import re
def is_palindrome(s):
# Оставляем только буквы и цифры, приводим к нижнему регистру
cleaned = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
return cleaned == cleaned[::-1]
# Пример использования:
input_string = "A man, a plan, a canal, Panama"
result = is_palindrome(input_string)
print(result) # Ожидаемый результат: True
Please open Telegram to view this post
VIEW IN TELEGRAM
Python-разработчик (Junior)
Junior Python разработчик
Python-разработчик (Junior)
Разработчик нейросетевых алгоритмов/Reinforcement Learning
Junior Data Scientist
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье показано, как создать свою страшилку на Хэллоуин с помощью Python и p5py, прямо в онлайн-IDE. Без лишних установок и настроек — просто открывай браузер и начинай программировать.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторные выражения — это компактный способ создания итераторов в Python. Они похожи на списковые выражения (list comprehensions), но возвращают по одному элементу за раз, а не создают сразу весь список. Это делает их более эффективными по памяти, особенно для обработки больших объемов данных.
# Списковое выражение — создает весь список в памяти
squared_list = [x**2 for x in range(10)]
print(squared_list) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Генераторное выражение — возвращает по одному значению
squared_gen = (x**2 for x in range(10))
print(next(squared_gen)) # 0
print(next(squared_gen)) # 1
🗣 Генераторные выражения экономят память и могут использоваться для последовательной обработки данных, где полный список не нужен.
Please open Telegram to view this post
VIEW IN TELEGRAM
Data Engineer middle
Data Engineer (middle)
Python-разработчик (middle, AI)
Python Developer (Middle/Middle+)
Middle Python Developer: Backend / Server side
Please open Telegram to view this post
VIEW IN TELEGRAM