连接到第三方Web套接字,并在处理后将数据传递给Django Channel

时间:2018-09-03 20:20:38

标签: django django-celery django-channels

我有以下独立代码,可通过Web套接字连接到第三方。它对接收到的消息进行一些统计计算,然后将结果输出到终端。通过此套接字接收的数据类型各不相同,并根据数据是什么进行处理。

我想通过Channels将其移植到Django,以便我的客户端通过Web套接字连接到我,然后将它们放置在Channel的组中,等待对应于其组的数据。在为各自的组进行操作之后,我的客户将从第3方套接字中推送数据。

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)

与第3方套接字的连接应在后台运行而不会中断,然后在完成对接收到的数据的计算后将其推入通道组。

关于如何执行此操作的想法?对于Channels和异步编码,我还是一个新手。 Celery在后台运行此功能是否有用,或者通道可以处理所有操作?

提前谢谢!

0 个答案:

没有答案