Подключитесь к стороннему веб-сокету и передайте данные после манипуляции на канал Django - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующий автономный код, который подключается к третьему лицу через веб-сокет. Он выполняет некоторые статистические вычисления для полученного сообщения, а затем выводит результаты на терминал. Тип данных, полученных через этот сокет, варьируется и обрабатывается в зависимости от данных.

Я хочу перенести его на Django через каналы, чтобы мои клиенты подключались ко мне через веб-сокет и помещались в группу каналов в ожидании данных, соответствующих их группе. Мои клиенты будут получать данные из стороннего сокета после манипуляций для их соответствующей группы.

from autobahn.asyncio.websocket import WebSocketClientProtocol, WebSocketClientFactory

            class MyProtocol(WebSocketClientProtocol):

                def onConnect(self, response):
                    # Do Something

                def onOpen(self):
                    # Do Something

                def onMessage(self, payload, isBinary):
                    # Perform heavy calculations on each message.

                def onClose(self, wasClean, code, reason):
                    # Do Something


            if __name__ == '__main__':

                import asyncio

                factory = WebSocketClientFactory("wss://example.com")
                factory.protocol = MyProtocol

                loop = asyncio.get_event_loop()
                sock = loop.create_connection(factory,"example.com", 9443, ssl=True)
                loop.run_forever(sock)

Соединение со сторонним сокетом должно выполняться в фоновом режиме без перерыва, а затем выдвигаться к группе каналов, когда она закончит вычисления с полученными данными.

Идеи о том, как это сделать? Я довольно плохо знаком с каналами и асинхронным кодированием. Будет ли Celery полезен в этой реализации для запуска в фоновом режиме или каналы могут справиться со всем этим?

Заранее спасибо!

...