Estoy tratando de configurar django para que envíe un correo electrónico automático cuando alcance una fecha determinada en mis modelos. Sin embargo, configuré un servidor Heroku-Redis y estoy tratando de conectarme a él. Creé una tarea simple para probar si el apio funciona, pero siempre devuelve el siguiente error:
Error al leer del socket: (10054, 'El host remoto cerró a la fuerza una conexión existente', Ninguno, 10054, Ninguno)
Configuré el apio de acuerdo con el sitio web:
apio.py:
import os from celery import Celery # Set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'incFleet.settings') app = Celery('incFleet') # Using a string here means the worker doesn't have to serialize # the configuration object to child processes. # - namespace='CELERY' means all celery-related configuration keys # should have a `CELERY_` prefix. app.config_from_object('django.conf:settings', namespace='CELERY') # Load task modules from all registered Django apps. app.autodiscover_tasks() @app.task(bind=True) def debug_task(self): print(f'Request: {self.request!r}')Tareas.py
import datetime from celery import shared_task, task from time import sleep from .models import trucks from datetime import datetime @shared_task() def sleepy(duration): sleep(duration) return 0 #@shared_task() #def send_warning():Mis puntos de vista:
def index(request): sleepy.delay(5) return render(request, 'Inventory/index.html')Y mi configuración.py
# Celery Broker - Redis CELERY_BROKER_URL = 'redis://:p0445df1196b44ba70a9bd0c84545315fec8a5dcbd77c8e8c4bd22ff4cd0a2ff4@ec2-54-167-58-171.compute-1.amazonaws.com:11900/' CELERY_RESULT_BACKEND = 'redis://:p0445df1196b44ba70a9bd0c84545315fec8a5dcbd77c8e8c4bd22ff4cd0a2ff4@ec2-54-167-58-171.compute-1.amazonaws.com:11900/' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json'Después de un tiempo me di cuenta de que el problema estaba en la red de mi oficina. El puerto al que intentaba acceder estaba cerrado. Tan pronto como activé redis en el servidor real, comenzó a funcionar bien.