我想使用Django WebSockets从外部API发送实时数据。我对HTTP的看法就是这样:
@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 :(得分:0)
Django本质上是同步的,因此它本身是/不可能实现web套接字。然而django的核心开发人员之一(我相信它的Andrew Goodwin,如果它的错误,请纠正我!)为此目的开发了channels。频道尽管应该是django的一部分,现在它是一个django项目,但与框架分开。 刚出来时,我已经尝试了很长一段时间的频道。这是一件很好的小事,尽管你应该知道它的哲学。
频道被故意设计为偏好低延迟(目标是少数 毫秒)和保证交付的高吞吐量,这 与某些消息队列设计不匹配。
有些功能,例如保证订阅消息,可以选择加入 它们会带来性能损失,但会使其更像消息队列。
如果这听起来不像您想要的那样,请选择django-websocket-redis。