🐍 Python 3.14+: новый SyntaxWarning про return в finally
В Python 3.14 появился свежий ворнинг, связанный с тем, что в блоках
—
—
—
Пример:
Теперь при запуске:
❗️ Проблема в том, что
Решение: вынести
А ещё лучше — просто:
👉 Идея ворнинга (PEP 765) в том, чтобы спасти разработчиков от коварных багов и неожиданных перезаписей return/break/continue внутри
🐸 Библиотека питониста
#буст
В Python 3.14 появился свежий ворнинг, связанный с тем, что в блоках
finally
нельзя (и не стоит) использовать:—
return
—
break
—
continue
Пример:
import random
def d6() -> int:
try:
return random.randint(1, 6)
finally:
return 4 # всегда перезапишет результат!
Теперь при запуске:
SyntaxWarning: 'return' in a 'finally' block
❗️ Проблема в том, что
return
внутри finally
переопределяет любое предыдущее значение — то есть в примере выше кубик всегда возвращает 4
, даже если генератор случайных чисел сработал корректно.Решение: вынести
return
из finally
, например:def d6() -> int:
try:
return random.randint(1, 6)
except Exception:
return 4 # fallback
А ещё лучше — просто:
def d6() -> int:
return random.randint(1, 6)
👉 Идея ворнинга (PEP 765) в том, чтобы спасти разработчиков от коварных багов и неожиданных перезаписей return/break/continue внутри
finally
.#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤3🤔3
⚡️ Фоновая обработка задач в Python с Celery и RabbitMQ
В современных приложениях важно уметь запускать фоновые задачи:
— регулярные джобы (очистка данных, отчёты),
— долгие вычисления,
— асинхронные уведомления или рассылки.
Для этого в Python чаще всего используют Celery и брокер сообщений, например RabbitMQ.
Почему Celery:
➡️ Один из самых популярных task-queue фреймворков в Python.
➡️ Легко интегрируется с Django, Flask и любыми Python-проектами.
➡️ Использует понятные концепции: декораторы для задач, питоновские структуры данных для сообщений.
➡️ Масштабируется до тысяч задач в секунду.
Почему RabbitMQ:
➡️ Проверенный брокер сообщений.
➡️ Поддержка сложной маршрутизации (exchanges, queues).
➡️ Гарантии доставки (ack, persistence).
➡️ Кросс-языковая совместимость (AMQP, MQTT, STOMP).
Пример приложения: сервис Slack-уведомлений о дожде:
🟠 OpenWeatherMap API → получаем прогноз.
🟠 GitHub API → используем как простую JSON-базу для защиты от дубликатов.
🟠 Slack API → отправляем уведомления.
🟠 Celery + RabbitMQ → автоматический запуск задачи каждый день в 12:00.
🔗 Полный гайд с кодом: https://clc.to/Bl_Rww
🐸 Библиотека питониста
#буст
В современных приложениях важно уметь запускать фоновые задачи:
— регулярные джобы (очистка данных, отчёты),
— долгие вычисления,
— асинхронные уведомления или рассылки.
Для этого в Python чаще всего используют Celery и брокер сообщений, например RabbitMQ.
Почему Celery:
Почему RabbitMQ:
Пример приложения: сервис Slack-уведомлений о дожде:
🔗 Полный гайд с кодом: https://clc.to/Bl_Rww
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18👍3