PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱PSQLPy.

PSQLPy — это новый Python-драйвер для PostgreSQL, полностью написанный на Rust. Он был вдохновлен Psycopg3 и AsyncPG.

ℹ️У этого проекта две основные цели: сделать взаимодействие с базой данных максимально быстрым (сейчас PSQLPy показывает себя в разы быстрее вышеупомянутых драйверов) и избежать бесполезных абстракций, сделав его как можно ближе к PostgreSQL.

❗️PSQLPy имеет все необходимые компоненты для создания высоконагруженных и отказоустойчивых приложений.

#PSQLPy #PostgreSQL #Python #Rust #Database #HighLoad #FaultTolerance #Programming #Psycopg3 #AsyncPG #DatabaseDriver

📱Ссылка на репозиторий:
https://github.com/qaspen-python/psqlpy
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥4⚡3
📱Redress.

redress — это лёгкая библиотека для умных повторных попыток в Python‑сервисах: она классифицирует ошибки по классам и подбирает для каждого свой backoff, с единым хуком для метрик и логов.

🔹Основные идеи:

🔘Классификатор ошибок: default_classifier распределяет исключения по фиксированному набору ErrorClass (PERMANENT, CONCURRENCY, RATE_LIMIT, SERVER_ERROR, TRANSIENT, UNKNOWN), плюс может вернуть retry_after_s и детали.

🔘Стратегии для каждого класса ошибок: для каждого ErrorClass можно задать отдельный алгоритм задержки (decorrelated_jitter, equal_jitter, token_backoff, retry_after_or и др.), поверх стандартной стратегии.

🔘Детерминированная «оболочка» повторов: deadline_s, max_attempts и max_unknown_attempts позволяют жёстко ограничить поведение и избежать бесконечных или хаотичных попыток.

🔘Наблюдаемость: единый on_metric‑хук получает события success, retry, permanent_fail, deadline_exceeded, max_attempts_exceeded, max_unknown_attempts_exceeded плюс теги, что удобно для Prometheus/OpenTelemetry.

🔘Симметрия синхронного и асинхронного кода: есть RetryPolicy и AsyncRetryPolicy с одинаковой моделью, плюс удобный декоратор @retry и контекстный менеджер policy.context для групповых вызовов.

🔻Типичный процесс использования:

🔘Установить:
pip install redress

🔘Описать политику с классифицированными стратегиями:
  from redress.policy import RetryPolicy
from redress.classify import default_classifier, ErrorClass
from redress.strategies import decorrelated_jitter, equal_jitter

policy = RetryPolicy(
classifier=default_classifier,
strategy=decorrelated_jitter(max_s=10.0),
strategies={
ErrorClass.CONCURRENCY: decorrelated_jitter(max_s=1.0),
ErrorClass.RATE_LIMIT: decorrelated_jitter(max_s=60.0),
ErrorClass.SERVER_ERROR: equal_jitter(max_s=30.0),
},
)


🔘Подключить механизм повторов к функции: через policy.call(), декоратор @retry или контекстный менеджер с общими metric‑хуками.

Отдельный плюс для боевых систем — CLI redress doctor, который проверяет RetryConfig/RetryPolicy и выводит нормализованный снапшот конфигурации, чтобы поймать странные комбинации max_attempts/deadline и стратегий ещё до развёртывания.

#redress #Python #RetryPolicy #Resilience #Observability #FaultTolerance #Backoff #ErrorHandling #Logging

📱Ссылка на репозиторий:
https://github.com/aponysus/redress
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥2👍11