2017-08-07 21 views
1

我想用Django WebSockets从外部API发送实时数据。我对HTTP的看法是这样的:如何使用Django WebSockets发送实时数据?

@permission_classes([GetPermission]) 
class DataList(GenericAPIView): 

    serializer_class = ObjectSerializer 

    def get(self, request): 
     parameter = self.request.query_params.get('parameter', None) 
     queryset = ExternalAPI().get(parameter, "RSQA") 
     id = Object.objects.get(parameter=parameter).id 
     queryset["id"] = id 
     return Response(queryset) 

我想用WebSockets而不是HTTP来不断地发送我的数据。这是一个很好的解决方案,可以接受而无需发送?我想知道应该怎么做?如果示例将显示在我的GenericAPIView上,我将不胜感激。

+0

你是指什么实时? – Rob

+0

@Rob数据例如每秒发送一次。 – wahtdbogh

回答

0

Django本质上是同步的,因此它本身不可能实现web套接字。然而,django的核心开发人员之一(我相信它的安德鲁古德温,纠正我,如果它错了!)为此开发了channels。渠道虽然应该是django的一部分,现在它是一个django项目,但与框架分离。 我刚刚尝试过频道,当它刚刚推出时。它的好东西,尽管你应该知道它的哲学。

通道被故意设计喜欢低延迟(目标是几 毫秒),并在有保证的交付,这 不匹配的一些消息队列设计的高吞吐量。

某些功能(如邮件的保证排序)选择为 ,但会产生性能影响,但会使其更像邮件队列。

如果听起来不像你想要的那样,那就去找类似django-websocket-redis的东西吧。

+0

是的,我写道,我打算使用websockets(Django频道)。但我不知道我的消费者应该如何看待,我希望有人向我展示解决方案或技巧。 – wahtdbogh