Hello, I am attempting to add asgi/channels to an existing django project/web app. I was originally able to get channels to work via python manage.py runserver .... I am trying to deploy the project in production but cannot cat Daphne to start. Error messages and relevant files below.
Questions 1. Can someone provide direction on getting the daphne error corrected? 2. Does anyone have any instruction on getting channels to work with daphne and nginx? Thank you. ------------------------- Attempting to run daphne server with error ... (mabtest) marc@mymachine:~/webdev/mabtest$ daphne -b 0.0.0.0 -p 8001 mabtest.asgi:main Traceback (most recent call last): File "/home/marc/Env/mabtest/bin/daphne", line 8, in <module> sys.exit(CommandLineInterface.entrypoint()) File "/home/marc/Env/mabtest/lib/python3.8/site-packages/daphne/cli.py", line 170, in entrypoint cls().run(sys.argv[1:]) File "/home/marc/Env/mabtest/lib/python3.8/site-packages/daphne/cli.py", line 232, in run application = import_by_path(args.application) File "/home/marc/Env/mabtest/lib/python3.8/site-packages/daphne/utils.py", line 14, in import_by_path target = getattr(target, bit) AttributeError: module 'mabtest.asgi' has no attribute 'main' ## NOTES ## - project name: mabtest - app name: main - redis is installed ----- mabtest/asgi.py ------- from .wsgi import * import os import django from django.core.asgi import get_asgi_application from channels.routing import get_default_application from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter from django.conf.urls import url from main.routing import ws_urlpatterns os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mabtest.settings") django.setup() application = get_default_application() ----- main/routing.py ----- from django.urls import path from .consumers import ws_consumer # Set the path to call the consumer ws_urlpatterns = [ path('ws/main/', ws_consumer.as_asgi()) ----- import json #from channels.generic.websocket import WebsocketConsumer from channels.generic.websocket import AsyncWebsocketConsumer from datetime import datetime from time import sleep # Define the consumer class to send the data through WebsocketConsumer class ws_consumer(AsyncWebsocketConsumer): # make a web socket connection async def connect(self): # make a channel layer and group so it can display on multiple browers tabs self.group_name = "aprs" await self.channel_layer.group_add( self.group_name, self.channel_name ) await self.accept() # group creates a message in key value pair format now = datetime.now() await self.channel_layer.group_send( self.group_name, { 'type': 'my_messages', # must match function def name below 'my_message_1': 'This is message #1', 'my_message_2': 'This is message #2', 'my_message_3': now.strftime("%H:%M:%S"), } ) # receive message from group and send it through websocket async def my_messages(self, event): # collect information my_message_1 = event['my_message_1'] my_message_2 = event['my_message_2'] my_message_3 = event['my_message_3'] # send information via json and websocket await self.send(text_data=json.dumps({ 'my_message_1': my_message_1, 'my_message_2': my_message_2, 'my_message_3': my_message_3, })) # self.accept() # while(True): # now = datetime.now() # self.send(json.dumps({'timeValue': now.strftime("%H:%M:%S")})) # sleep(1) # disconnects from websocket async def disconnect(self, close_code): await self.channel_layer.group_discard( self.group_name, self.channel_name ) -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/26317000-ce40-4068-814e-27dfde3af8edn%40googlegroups.com.