Django Celery Ошибка на сервере Runserver при использовании Redis
В настоящее время я использую django и celery я сделал свою конфигурацию и установил redis и redis действительно активен я проверил с помощью cli также
когда я запускаю python manage.py shell
и запускаю задачу, она работает отлично, но когда я обращаюсь к задаче, вызывая ее из представления, я получаю эту ошибку
Это моя конфигурация celery, которую я сейчас использую, и я использую Я установил redis с помощью pip, а также cli в системе, но все же я пытался изменить эту конфигурацию, но она работает только если я обращаюсь к задаче, вызывая ее самостоятельно
import os
from celery import Celery
from django.conf import settings
from Gimsap.settings import CELERY_BROKER_URL
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Gimsap.settings')
BROKER_URL = "redis://localhost:6379/1"
# used redis broker if it exists
app = Celery('Gimsap', namespace='CELERY')
app.config_from_object('django.conf:settings')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks(settings.INSTALLED_APPS)
app.conf.broker_url = BROKER_URL
CELERY_BROKER_URL = BROKER_URL
app.conf.beat_schedule = {
"""'
Test celery worker
send_admin_message': {
'task': 'home.tasks.test_task',
'schedule': 3,
},"""
}
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')
Я занимался этой проблемой в течение нескольких часов, но в конце концов Я убедился, что мой сервер redis работает, что было всегда, но я добавил некоторые настройки в мой Celery.py, добавив ключевое слово borker и url borker, и он начал работать нормально
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Gimsap.settings')
# used redis broker if it exists
app = Celery('Gimsap', broker="redis://localhost:6379", backend="redis://localhost:6379")
app.config_from_object('django.conf:settings')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks(settings.INSTALLED_APPS)
BROKER_URL = "redis://localhost:6379"
broker_url = "redis://localhost:6379"
app.conf.broker_url = BROKER_URL
CELERY_BROKER_URL = BROKER_URL
app.conf.beat_schedule = {
"""'
Test celery worker
send_admin_message': {
'task': 'home.tasks.test_task',
'schedule': 3,
},"""
}
@app.task
def debug_task():
print(f'Request: ')
Как я отладил это, @shared_task не использовал конфигурацию по умолчанию. Поскольку @app.task в celery работал хорошо, когда я понял, что celery не получает доступ к моему серверу redis