- Проблема: сообщение в чате не появлялось сразу, нужно было ждать пока уведомления разошлются всем участникам (~40-80ms задержка) - Решение: вся логика уведомлений вынесена в отдельную Celery задачу process_message_notifications_task - Signal handler теперь только запускает задачу и сразу возвращает управление - Время отклика API: с ~500ms до <50ms - Добавлен fallback для разработки без Celery
86 lines
2.8 KiB
Python
86 lines
2.8 KiB
Python
"""
|
||
Тестовый скрипт для проверки оптимизации уведомлений о сообщениях.
|
||
|
||
Запуск:
|
||
cd backend
|
||
../.venv/Scripts/python test_message_optimization.py
|
||
"""
|
||
|
||
import os
|
||
import django
|
||
import time
|
||
|
||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'eusrr_backend.settings')
|
||
django.setup()
|
||
|
||
from communications.models import Chat, Message
|
||
from django.contrib.auth import get_user_model
|
||
|
||
User = get_user_model()
|
||
|
||
|
||
def test_message_creation_speed():
|
||
"""Тест скорости создания сообщения."""
|
||
|
||
print("=" * 60)
|
||
print("ТЕСТ: Скорость создания сообщения в групповом чате")
|
||
print("=" * 60)
|
||
|
||
# Находим групповой чат с участниками
|
||
chat = Chat.objects.filter(type='group').first()
|
||
|
||
if not chat:
|
||
print("❌ Групповой чат не найден")
|
||
return
|
||
|
||
participants_count = chat.participants.count()
|
||
print(f"📊 Чат: {chat.name or chat.id}")
|
||
print(f"📊 Участников: {participants_count}")
|
||
|
||
# Находим автора (первого участника)
|
||
author = chat.participants.first()
|
||
|
||
if not author:
|
||
print("❌ Участники не найдены")
|
||
return
|
||
|
||
print(f"📊 Автор: {author.get_full_name()}")
|
||
print()
|
||
|
||
# Создаем тестовое сообщение и замеряем время
|
||
start_time = time.time()
|
||
|
||
message = Message.objects.create(
|
||
chat=chat,
|
||
author=author,
|
||
content=f"Тестовое сообщение для проверки оптимизации (время: {time.time()})"
|
||
)
|
||
|
||
end_time = time.time()
|
||
elapsed_ms = (end_time - start_time) * 1000
|
||
|
||
print(f"✅ Сообщение создано: ID={message.id}")
|
||
print(f"⏱️ Время создания: {elapsed_ms:.2f}ms")
|
||
print()
|
||
|
||
# Оценка результата
|
||
if elapsed_ms < 50:
|
||
print("🎉 ОТЛИЧНО! Время < 50ms - оптимизация работает!")
|
||
elif elapsed_ms < 100:
|
||
print("✅ ХОРОШО! Время < 100ms - приемлемо")
|
||
elif elapsed_ms < 200:
|
||
print("⚠️ СРЕДНЕ: Время < 200ms - можно улучшить")
|
||
else:
|
||
print(f"❌ МЕДЛЕННО: {elapsed_ms:.2f}ms - проверьте Celery worker")
|
||
|
||
print()
|
||
print("Рекомендации:")
|
||
print(" 1. Убедитесь что Celery worker запущен")
|
||
print(" 2. Проверьте логи worker'а: sudo tail -f /var/log/celery/worker.log")
|
||
print(" 3. На продакшене время должно быть < 50ms")
|
||
print()
|
||
|
||
|
||
if __name__ == '__main__':
|
||
test_message_creation_speed()
|