I'm trying to create a chat that when it meets the condition of "hola" is sent by a task in celery. However, when it enters the condition the status is not updated, can someone help me?
I leave my code, please help!
Mi error is:
raise OSError(err, 'Connect call failed %s' % (address,)) ConnectionRefusedError: [Errno 10061] Connect call failed ('::1', 6379)
consumers.py
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from .tasks import MensajeAlGrupo
class Consumidor(AsyncWebsocketConsumer):
async def connect(self):
# Join room group
await self.channel_layer.group_add(
'grupo',
self.channel_name
)
await self.accept()
async def disconnect(self, close_code):
await self.channel_layer.group_discard(
'grupo',
self.channel_name
)
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
if str(message) == "hola":
MensajeAlGrupo.delay()
else:
# Send message to room group
await self.channel_layer.group_send(
'grupo',
{
'type': 'chat_message',
'message': message
}
)
# Receive message from room group
async def chat_message(self, event):
message = event['message']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': message
}))
Tasks.py
#De celery
from Filtros.celery import app
from channels.layers import get_channel_layer
@app.task()
def MensajeAlGrupo():
channel_layer = get_channel_layer()
async_to_sync(channel_layer.group_send)(
'grupo',
{"type": "chat.message", "message": "Hello World"},
)
celery.py
#De celery
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Filtros.settings')
app = Celery('Proyecto')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
app.conf.update(
BROKER_URL = 'redis://127.0.0.1:6379/0',
)
Please help me, thx!
Sorry for my english :s