Files
dbstorage/dbapp/test_celery.py

76 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python
"""
Скрипт для тестирования Celery подключения и задач.
Запуск: python test_celery.py
"""
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbapp.settings.production')
django.setup()
from celery import current_app
from dbapp.celery import debug_task
def test_celery_connection():
"""Проверка подключения к Celery"""
print("=" * 60)
print("ТЕСТ CELERY ПОДКЛЮЧЕНИЯ")
print("=" * 60)
# Проверка конфигурации
print(f"\n1. Broker URL: {current_app.conf.broker_url}")
print(f"2. Result Backend: {current_app.conf.result_backend}")
# Проверка подключения к брокеру
try:
inspect = current_app.control.inspect()
stats = inspect.stats()
if stats:
print(f"\n3. ✓ Активные workers: {list(stats.keys())}")
for worker, info in stats.items():
print(f" - {worker}: {info}")
else:
print("\n3. ✗ Нет активных workers!")
print(" Убедитесь, что Celery worker запущен:")
print(" docker-compose -f docker-compose.prod.yaml logs worker")
except Exception as e:
print(f"\n3. ✗ Ошибка подключения к брокеру: {e}")
return False
# Проверка зарегистрированных задач
registered_tasks = list(current_app.tasks.keys())
print(f"\n4. Зарегистрированные задачи ({len(registered_tasks)}):")
for task in sorted(registered_tasks):
if not task.startswith('celery.'):
print(f" - {task}")
# Тест простой задачи
print("\n5. Тестирование задачи...")
try:
result = debug_task.delay()
print(f" Task ID: {result.id}")
print(f" Waiting for result...")
output = result.get(timeout=10)
print(f" ✓ Результат: {output}")
except Exception as e:
print(f" ✗ Ошибка выполнения задачи: {e}")
return False
print("\n" + "=" * 60)
print("ВСЕ ТЕСТЫ ПРОЙДЕНЫ")
print("=" * 60)
return True
# if __name__ == "__main__":
# test_celery_connection()
import requests
url = f"https://www.lyngsat.com/europe.html"
payload = {"cmd": "request.get", "url": url, "maxTimeout": 60000}
response = requests.post("http://localhost:8191/v1", json=payload)
print(response.content)