I thought it uses in memory channel layer by default if it's empty? I 
didn't try setting a value, because only redis was available in v2.0.0 and 
I don't like using stuff I don't understand.

On Saturday, February 3, 2018 at 6:08:02 AM UTC+2, Andrew Godwin wrote:
>
> It needs to contain a value to work - what value were you trying that was 
> not empty?
>
> Andrew
>
> On Fri, Feb 2, 2018 at 8:04 PM, Ahmed Magdy <[email protected] 
> <javascript:>> wrote:
>
>> I tried not having CHANNEL_LAYERS or setting it to {} 
>> same exception
>>
>> On Saturday, February 3, 2018 at 3:36:43 AM UTC+2, Andrew Godwin wrote:
>>>
>>> Do you have a CHANNEL_LAYERS setting in your settings file? If so, what 
>>> is it set to?
>>>
>>> Andrew
>>>
>>> On Fri, Feb 2, 2018 at 5:17 PM, Ahmed Magdy <[email protected]> wrote:
>>>
>>>> That's what I did after reading the documentation here's how my 
>>>> channels files look like
>>>>
>>>> # settings.py
>>>> # ...
>>>> ASGI_APPLICATION = 'djangoChannels.routing.application'
>>>> # ...
>>>>
>>>> # routing.py
>>>> from django.conf.urls import url
>>>>
>>>> from channels.routing import ProtocolTypeRouter, URLRouter
>>>> from channels.auth import AuthMiddlewareStack
>>>>
>>>> from .consumers import ChatConsumer
>>>>
>>>> application = ProtocolTypeRouter({
>>>>    # Empty for now (http->django views is added by default)
>>>>    'websocket': AuthMiddlewareStack(
>>>>        URLRouter([
>>>>            url('^sessions/$', ChatConsumer)
>>>>        ])
>>>>    )
>>>> })
>>>>
>>>> # consumers.py
>>>> from asgiref.sync import AsyncToSync
>>>> from channels.generic.websocket import WebsocketConsumer
>>>>
>>>> class ChatConsumer(WebsocketConsumer):
>>>>
>>>>     def connect(self):
>>>>        AsyncToSync(self.channel_layer.group_add)("chat", self
>>>> .channel_name)
>>>>
>>>>     def disconnect(self):
>>>>        AsyncToSync(self.channel_layer.group_discard)("chat", self
>>>> .channel_name)
>>>>
>>>>
>>>> After connecting with JS websocket to 
>>>>
>>>> ws://127.0.0.1:8000/sessions/
>>>>>
>>>>
>>>> Raises an exception
>>>>
>>>> Performing system checks...
>>>>>
>>>>> System check identified no issues (0 silenced).
>>>>> February 03, 2018 - 03:14:29
>>>>> Django version 2.0.2, using settings 'djangoChannels.settings'
>>>>> Starting ASGI/Channels development server at http://127.0.0.1:8000/
>>>>> Quit the server with CTRL-BREAK.
>>>>> 2018-02-03 03:14:29,799 - INFO - server - HTTP/2 support not enabled 
>>>>> (install the http2 and tls Twisted extras)
>>>>> 2018-02-03 03:14:29,800 - INFO - server - Listening on endpoint 
>>>>> tcp:port=8000:interface=127.0.0.1
>>>>> [2018/02/03 03:14:32] WebSocket HANDSHAKING /sessions/ [127.0.0.1:8631
>>>>> ]
>>>>> ERROR:root:Exception inside application: 'NoneType' object has no 
>>>>> attribute 'group_add'
>>>>>   File "c:\python35\Lib\asyncio\tasks.py", line 241, in _step
>>>>>     result = coro.throw(exc)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\consumer.py",
>>>>>  
>>>>> line 53, in __call__
>>>>>     await await_many_dispatch([receive], self.dispatch)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\utils.py",
>>>>>  
>>>>> line 48, in await_many_dispatch
>>>>>     await dispatch(result)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py",
>>>>>  
>>>>> line 84, in inner
>>>>>     return await async_func(*args, **kwargs)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py",
>>>>>  
>>>>> line 67, in __call__
>>>>>     return await asyncio.wait_for(future, timeout=None)
>>>>>   File "c:\python35\Lib\asyncio\tasks.py", line 367, in wait_for
>>>>>     return (yield from fut)
>>>>>   File "c:\python35\Lib\asyncio\futures.py", line 358, in __iter__
>>>>>     yield self  # This tells Task to wait for completion.
>>>>>   File "c:\python35\Lib\asyncio\tasks.py", line 290, in _wakeup
>>>>>     future.result()
>>>>>   File "c:\python35\Lib\asyncio\futures.py", line 274, in result
>>>>>     raise self._exception
>>>>>   File "c:\python35\Lib\concurrent\futures\thread.py", line 55, in run
>>>>>     result = self.fn(*self.args, **self.kwargs)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py",
>>>>>  
>>>>> line 76, in thread_handler
>>>>>     raise e
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\asgiref\sync.py",
>>>>>  
>>>>> line 74, in thread_handler
>>>>>     self.func(*args, **kwargs)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\consumer.py",
>>>>>  
>>>>> line 93, in dispatch
>>>>>     handler(message)
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\lib\site-packages\channels\generic\websocket.py",
>>>>>  
>>>>> line 19, in websocket_connect
>>>>>     self.connect()
>>>>>   File 
>>>>> "D:\Programming\DjangoWebsite\HUWebsite\husite\djangoChannels\djangoChannels\consumers.py",
>>>>>  
>>>>> line 8, in connect
>>>>>     AsyncToSync(self.channel_layer.group_add)("chat", 
>>>>> self.channel_name)
>>>>>   'NoneType' object has no attribute 'group_add'
>>>>> [2018/02/03 03:14:32] WebSocket DISCONNECT /sessions/ [127.0.0.1:8631]
>>>>>
>>>>
>>>>
>>>> On Friday, February 2, 2018 at 7:37:36 PM UTC+2, Andrew Godwin wrote:
>>>>>
>>>>> Hi Ahmed,
>>>>>
>>>>> In the new release channel layers are optional - if you don't 
>>>>> configure them they will indeed come through as None. The settings format 
>>>>> changed slightly too - you can read more here: 
>>>>> http://channels.readthedocs.io/en/latest/topics/channel_layers.html
>>>>>
>>>>> Andrew
>>>>>
>>>>> On Fri, Feb 2, 2018 at 3:31 AM, Ahmed Magdy <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> I'm relatively new to channels and was using Channels v1.x.x groups 
>>>>>> easily, but after v2.0.0 update and reading the documentation
>>>>>>
>>>>>> # This example uses WebSocket consumer, which is synchronous, and so
>>>>>> # needs the async channel layer functions to be converted.
>>>>>> from asgiref.sync import AsyncToSync
>>>>>>
>>>>>> class ChatConsumer(WebsocketConsumer):
>>>>>>
>>>>>>     def connect(self):
>>>>>>         AsyncToSync(self.channel_layer.group_add)("chat", 
>>>>>> self.channel_name)
>>>>>>
>>>>>>     def disconnect(self):
>>>>>>         AsyncToSync(self.channel_layer.group_discard)("chat", 
>>>>>> self.channel_name)
>>>>>>
>>>>>> Enter code here...
>>>>>>
>>>>>> channel_layer, channel_name are always NoneType and exception occurs.
>>>>>>
>>>>>> Is that because I didn't configure channel layers? But in the old 
>>>>>> version I also used the in memory type and Groups were working well.
>>>>>>
>>>>>> -- 
>>>>>> 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 [email protected].
>>>>>> To post to this group, send email to [email protected].
>>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/django-users/fff84d59-da69-47d5-a7c3-ee0221680642%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/django-users/fff84d59-da69-47d5-a7c3-ee0221680642%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>> <https://lh3.googleusercontent.com/-fvPoTzCZOwo/WnUNLrDzVZI/AAAAAAAAC6Q/lNyrJjyOUtkudo5F--8pKqzlX23r25i4gCLcBGAs/s1600/Capture.JPG>
>>>>
>>>> -- 
>>>> 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 [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/django-users.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/django-users/8ca34830-d807-447c-836b-d2e52ee87b6d%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/django-users/8ca34830-d807-447c-836b-d2e52ee87b6d%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> 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 [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/d0fc9f6a-43f4-41c1-8a5e-b988a9fa7870%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/d0fc9f6a-43f4-41c1-8a5e-b988a9fa7870%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/fb9aa942-8d53-472c-bec0-a1c4a46171d3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to