Приложение Django channels chat async не работает на heroku, но отлично работает в локальной среде и не обнаруживает ошибок в файлах журналов heroku

#python #django #heroku #django-channels

#питон #джанго #героку #джанго-каналы

Вопрос:

Я новичок в каналах и перепробовал все возможные решения, чтобы это работало, но мое приложение для чата не работает на heroku, но отлично работает в локальной среде. Мои другие приложения для блогов и историй отлично работают как на локальном, так и на heroku, я столкнулся с этой проблемой с помощью приложения «Просто чат». Вот это settings.py файл

 ASGI_APPLICATION = 'core.routing.application'   DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'  CHANNEL_LAYERS = {  "default": {  "BACKEND": "channels.layers.InMemoryChannelLayer",  # "CONFIG": {  # "hosts": [('127.0.0.1', 6379)]  # }  } }  

routing.py

 from django.urls import re_path from . import consumers  websocket_urlpatterns = [  re_path(r'ws/chat/(?Plt;room_namegt;w )/

asgi.py

 import os  from django.core.asgi import get_asgi_application  os.environ.setdefault('DJANGO_SETTINGS_MODULE','core.settings')  application = get_asgi_application()  

consumers.py

 import json  

из channels.generic.websocket импортируйте AsyncWebsocketConsumer

пользователь класса ChatRoomConsumer(AsyncWebsocketConsumer): асинхронное подключение(self): self.room_name = self.область действия['url_route']['kwargs']['имя комнаты'] self.room_group_name = 'чат % s' % self.room_name

 await self.channel_layer.group_add(  self.room_group_name,  self.channel_name  )   await self.accept()  async def disconnect(self, close_code):  await self.channel_layer.group_discard(  self.room_group_name,  self.channel_name  )  async def receive(self, text_data):  text_data_json = json.loads(text_data)  message = text_data_json['message']  username = text_data_json['username']   await self.channel_layer.group_send(  self.room_group_name,  {  'type': 'chatroom_message',  'message': message,  'username': username,  }  )  async def chatroom_message(self, event):  message = event['message']  username = event['username']   await self.send(text_data=json.dumps({  'message': message,  'username': username,  }))  pass  

и мой файл Procfile

 web: gunicorn core.wsgi:application --log-file - --log-level debug web: daphne core.asgi:application --port $PORT --bind 0.0.0.0 -v2 worker: python manage.py runworker channels --settings=core.settings -v2 python manage.py collectstatic --noinput  

manage.py мигрировать


, consumers.ChatRoomConsumer.as_asgi()), ]
asgi.py


consumers.py


из channels.generic.websocket импортируйте AsyncWebsocketConsumer

пользователь класса ChatRoomConsumer(AsyncWebsocketConsumer): асинхронное подключение(self): self.room_name = self.область действия[‘url_route’][‘kwargs’][‘имя комнаты’] self.room_group_name = ‘чат % s’ % self.room_name


и мой файл Procfile


manage.py мигрировать