我有一个Django应用程序与渠道。它打开WebSocket连接到加密市场数据提供商。我收到了滴答数据,我把这些滴答插入数据库。
我也想发送滴答数据到其他应用程序(说前端)。但我不能有效地。
目前只有一个前端应用程序。因此,当它连接到django通道时,我将该连接添加到名为('root')的组,并将所有市场报价数据发送到该组。
所以这里的问题是,如果我决定连接第二个前端应用程序,我会得到第一个用户请求的所有数据(因为两个客户端都存在于django的root组中)。
我尝试了一种方法,当用户请求特定加密的数据时,我将他添加到该加密命名的组(如果用户只想要比特币数据,我将他添加到比特币组),但我在django服务器上获得了大量的crpto数据,每秒的tick数量非常大。将每个tick数据发送到特定的加密组通道(在tick check符号上并将tick转发到该符号命名的django通道)感觉有点慢。
关于如何处理这个问题,有什么建议吗?
2条答案
按热度按时间s6fujrry1#
你可以在Django代码中的任何地方向通道组发送数据
daolsyd02#
你可以通过订阅前端应用程序的主题来解决这个问题。订阅主题是spring WebSocket使用STOMP提供的功能。然而,在Python中,我没有找到任何这样的实用程序。下面我来解决这个问题。
1.每个前端应用程序都会发送它感兴趣的主题列表。
1.在消费者中,将这些主题添加到范围变量中。
1.现在,当你发送任何东西到组,你应该总是发送与主题。对于例如。
1.现在,当Channels调用消费者的
def notify_message
时,您应该检查接收到的主题是否在订阅主题列表中。如果是,发送它。1.通过这种方式,您只向客户端发送订阅主题的数据。您可以随时更改连接的客户端的主题订阅,只需将数据从客户端发送到服务器。
我希望这能帮上忙。