我有以下独立代码,可通过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在后台运行此功能是否有用,或者通道可以处理所有操作?
提前谢谢!