2017-08-07 66 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

相關問題