Hi All,

I am using channels to implement WebSockets.
I am trying to send data through WebSockets from *post_save *django signal.
Below is my code.

**signals.py**


@receiver(post_save, sender=CheckIn)
def send_data_on_save(sender, instance, **kwargs):
    channel_layer = get_channel_layer()
    stats = get_stats()
    async_to_sync(channel_layer.group_send)(
            'dashboard',
            {
                'type': 'send_data',
                'message': stats
            }
        )


    analytics = get_analytics()
    async_to_sync(channel_layer.group_send)(
            'analytic',
            {
                'type': 'send_data',
                'message': analytics
            }
        )



**consumers.py**


class DashboardConsumer(WebsocketConsumer):
    def connect(self):
        self.room_group_name = 'dashboard'


        # Join room group
        async_to_sync(self.channel_layer.group_add)(
            self.room_group_name,
            self.channel_name
        )


        self.accept()


    def disconnect(self, close_code):
        # Leave room group
        async_to_sync(self.channel_layer.group_discard)(
            self.room_group_name,
            self.channel_name
        )


    # Receive message from WebSocket
    def receive(self, text_data):
        text_data_json = json.loads(text_data)
        message = text_data_json['message']


        # Send message to room group
        async_to_sync(self.channel_layer.group_send)(
            self.room_group_name,
            {
                'type': 'send_data',
                'message': message
            }
        )


    # Receive message from room group
    def send_data(self, event):
        message = event['message']


        # Send message to WebSocket
        self.send(text_data=json.dumps({
            'message': message
        }))



this same piece of code is working on my local machine(windows) but when i 
am trying to run this code on server(ubuntu 16.04) i am getting bellow 
error:

**Traceback**



Exception inside application: module 'asyncio' has no attribute 
'_get_running_loop'
    File "/usr/lib/python3.5/asyncio/tasks.py", line 241, in _step
        result = coro.throw(exc)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/sessions.py"
, line 183, in __call__
        return await self.inner(receive, self.send)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/middleware.py"
, line 41, in coroutine_call
        await inner_instance(receive, send)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/consumer.py"
, line 59, in __call__
        [receive, self.channel_receive], self.dispatch
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/utils.py", 
line 52, in await_many_dispatch
        await dispatch(result)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/asgiref/sync.py", 
line 145, in __call__
        return await asyncio.wait_for(future, timeout=None)
    File "/usr/lib/python3.5/asyncio/tasks.py", line 373, in wait_for
        return (yield from fut)
    File "/usr/lib/python3.5/asyncio/futures.py", line 361, in __iter__
        yield self  # This tells Task to wait for completion.
    File "/usr/lib/python3.5/asyncio/tasks.py", line 296, in _wakeup
        future.result()
    File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
        raise self._exception
    File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
        result = self.fn(*self.args, **self.kwargs)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/db.py", 
line 14, in thread_handler
        return super().thread_handler(loop, *args, **kwargs)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/asgiref/sync.py", 
line 164, in thread_handler
        return func(*args, **kwargs)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/consumer.py"
, line 105, in dispatch
        handler(message)
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/channels/generic/websocket.py"
, line 39, in websocket_connect
        self.connect()
    File "/home/user1/demowebapps/vmsbackend/check_in/consumers.py", line 57
, in connect
        self.channel_name
    File 
"/home/user1/demowebapps/env/lib/python3.5/site-packages/asgiref/sync.py", 
line 41, in __call__
        if asyncio._get_running_loop() is not None:
    module 'asyncio' has no attribute '_get_running_loop'





also when i am sending data normally from
javascript  .send()


function it is working normally on server but when post_save signal is 
called then only i get this error on server. this is working fine on my 
local system.
I tried removing *async_to_sync *from signals then it is not giving error 
but it is not transmitting data through web socket.
then it is giving:

./check_in/signals.py:47: RuntimeWarning: Coroutine
'RedisChannelLayer.group_send' was never awaited
'message': analytics


I am using *python 3.5.2* on both local and server.
please find attached *requirements.txt*
I don't know whats wrong. is it code or something else. 
any help is appreciated.

Thanks

Regards,
Rohit

-- 
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/5d499e4f-b64c-48bb-8711-5c6bbbcbe2c3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
aioredis==1.2.0
asgiref==3.1.2
asn1crypto==0.24.0
async-timeout==3.0.1
attrs==19.1.0
autobahn==19.6.2
Automat==0.7.0
certifi==2017.11.5
cffi==1.12.3
channels==2.2.0
channels-redis==2.4.0
chardet==3.0.4
constantly==15.1.0
cryptography==2.7
daphne==2.3.0
decorator==4.1.2
Django==2.0.1
django-cors-headers==2.1.0
django-oauth-toolkit==1.0.0
djangorestframework==3.7.7
hiredis==1.0.0
hyperlink==19.0.0
idna==2.6
incremental==17.5.0
ipython==6.2.1
ipython-genutils==0.2.0
jedi==0.11.1
msgpack==0.6.1
oauthlib==2.0.6
parso==0.1.1
pexpect==4.3.1
pickleshare==0.7.4
Pillow==5.0.0
prompt-toolkit==1.0.15
psycopg2==2.7.3.2
ptyprocess==0.5.2
pycparser==2.19
Pygments==2.2.0
PyHamcrest==1.9.0
pytz==2017.3
requests==2.18.4
requests-oauthlib==1.2.0
simplegeneric==0.8.1
six==1.11.0
traitlets==4.3.2
Twisted==19.2.1
txaio==18.8.1
urllib3==1.22
wcwidth==0.1.7
zope.interface==4.6.0

Reply via email to