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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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