Первый трай фикса celery
This commit is contained in:
96
dbapp/check_redis.py
Normal file
96
dbapp/check_redis.py
Normal file
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Скрипт для проверки подключения к Redis.
|
||||
Запуск: python check_redis.py
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
|
||||
try:
|
||||
import redis
|
||||
except ImportError:
|
||||
print("❌ Redis библиотека не установлена")
|
||||
print("Установите: pip install redis")
|
||||
sys.exit(1)
|
||||
|
||||
def check_redis():
|
||||
"""Проверка подключения к Redis"""
|
||||
print("=" * 60)
|
||||
print("ПРОВЕРКА REDIS")
|
||||
print("=" * 60)
|
||||
|
||||
# Получаем URL из переменных окружения
|
||||
broker_url = os.getenv("CELERY_BROKER_URL", "redis://localhost:6379/0")
|
||||
cache_url = os.getenv("REDIS_URL", "redis://localhost:6379/1")
|
||||
|
||||
print(f"\n1. Broker URL: {broker_url}")
|
||||
print(f"2. Cache URL: {cache_url}")
|
||||
|
||||
# Проверка broker (database 0)
|
||||
print("\n3. Проверка Celery Broker (db 0)...")
|
||||
try:
|
||||
r_broker = redis.from_url(broker_url)
|
||||
r_broker.ping()
|
||||
print(" ✓ Подключение успешно")
|
||||
|
||||
# Проверка ключей
|
||||
keys = r_broker.keys("*")
|
||||
print(f" ✓ Ключей в базе: {len(keys)}")
|
||||
|
||||
# Проверка очереди celery
|
||||
queue_length = r_broker.llen("celery")
|
||||
print(f" ✓ Задач в очереди 'celery': {queue_length}")
|
||||
|
||||
except redis.ConnectionError as e:
|
||||
print(f" ✗ Ошибка подключения: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f" ✗ Ошибка: {e}")
|
||||
return False
|
||||
|
||||
# Проверка cache (database 1)
|
||||
print("\n4. Проверка Django Cache (db 1)...")
|
||||
try:
|
||||
r_cache = redis.from_url(cache_url)
|
||||
r_cache.ping()
|
||||
print(" ✓ Подключение успешно")
|
||||
|
||||
# Проверка ключей
|
||||
keys = r_cache.keys("*")
|
||||
print(f" ✓ Ключей в базе: {len(keys)}")
|
||||
|
||||
except redis.ConnectionError as e:
|
||||
print(f" ✗ Ошибка подключения: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f" ✗ Ошибка: {e}")
|
||||
return False
|
||||
|
||||
# Тест записи/чтения
|
||||
print("\n5. Тест записи/чтения...")
|
||||
try:
|
||||
test_key = "test:celery:connection"
|
||||
test_value = "OK"
|
||||
|
||||
r_broker.set(test_key, test_value, ex=10) # TTL 10 секунд
|
||||
result = r_broker.get(test_key)
|
||||
|
||||
if result and result.decode() == test_value:
|
||||
print(f" ✓ Запись/чтение работает")
|
||||
r_broker.delete(test_key)
|
||||
else:
|
||||
print(f" ✗ Ошибка: ожидалось '{test_value}', получено '{result}'")
|
||||
return False
|
||||
|
||||
except Exception as e:
|
||||
print(f" ✗ Ошибка: {e}")
|
||||
return False
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("✓ ВСЕ ПРОВЕРКИ ПРОЙДЕНЫ")
|
||||
print("=" * 60)
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = check_redis()
|
||||
sys.exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user