follow-cache-invalidate-before-fix
All checks were successful
Deploy on push / deploy (push) Successful in 5m18s

This commit is contained in:
2025-10-01 15:04:36 +03:00
parent 14ff155789
commit 4800f227bc

View File

@@ -109,6 +109,13 @@ async def follow(
)
.first()
)
# 🔧 ИСПРАВЛЕНИЕ: Инвалидируем кэш ДО проверки existing_sub,
# чтобы всегда возвращать актуальный список подписок (даже при ошибке "already following")
cache_key_pattern = f"author:follows-{entity_type}s:{follower_id}"
await redis.execute("DEL", cache_key_pattern)
logger.debug(f"Инвалидирован кэш подписок: {cache_key_pattern}")
if existing_sub:
logger.info(f"Пользователь {follower_id} уже подписан на {what.lower()} с ID {entity_id}")
error = "already following"
@@ -120,20 +127,10 @@ async def follow(
session.commit()
logger.info(f"Пользователь {follower_id} подписался на {what.lower()} с ID {entity_id}")
# Инвалидируем кэш подписок пользователя после любой операции
cache_key_pattern = f"author:follows-{entity_type}s:{follower_id}"
await redis.execute("DEL", cache_key_pattern)
logger.debug(f"Инвалидирован кэш подписок: {cache_key_pattern}")
if cache_method:
logger.debug("Обновление кэша сущности")
await cache_method(entity_dict)
# Инвалидируем кэш подписок пользователя для обновления списка подписок
cache_key_pattern = f"author:follows-{entity_type}s:{follower_id}"
await redis.execute("DEL", cache_key_pattern)
logger.debug(f"Инвалидирован кэш подписок: {cache_key_pattern}")
if what == "AUTHOR" and not existing_sub:
logger.debug("Отправка уведомления автору о подписке")
if isinstance(follower_dict, dict) and isinstance(entity_id, int):