2017-05-30 15 views
1

私はDjango Rest APIを介して見ることができるガソリンスタンドのリストを持っているプロジェクトに取り組んでいます。ステーションデータ、すなわち燃料と容量が利用可能です。Djangoチャンネルまたはソケットベースの接続のための竜巻

燃料レベルを検出するためのマイクロコントローラも開発しました。今問題は、このデータが10分ごとにWebバックエンドに送信され(残りの1分に減らすことができる)、残りのAPI経由でステーションモデルを更新することです。私はどのようにこれを処理するか分からない。この場合、Djangoチャンネルのようなものは役に立ちますか?

サーバーでは、CとJavaが混在してデータが送信されます。多くのステーションが作成される可能性があるので、スケーラブルなソリューションにする必要があります。

+0

はい。チャンネルは、この目的のための最良のオプションです。また、この質問はあなたがタラを提供していないために話題にはなりません。 –

+0

あなたの応答Rajaに感謝します。問題はコード関連ではなく、方法論に関連しているため、コードはありません。 –

答えて

1

私は自分の質問に答えます。ウェブ・ソケットは、クライアント・ブラウザとウェブ・サーバとの間であろうと、サーバとサーバとの間の通信であろうと、双方向通信メカニズムを可能にする。

クライアントブラウザとWebサーバーの間にこの接続を確立する方法については多くのチュートリアルがありますが、2つのサーバー間の対話方法に関するドキュメントは非常に限られています。

1は、Djangoのチャンネルを設定し、すなわち127.0.0.1:8001

上の着信接続を聴いている場合だからあなたconsumers.pyは、そのような場所を任意の受信メッセージのあなたのルートws_messageとして、コードを持っているでしょう。それは単に端末に受信したものをエコーアウトします。あなたが他のサーバ(データを送信多分マイクロコントローラ)からの接続を確立したい場合は

from channels import Group 
def ws_message(message): 
    print(message.content['text']) 
    Group('chat').send({ 
     'text': 'user %s' % message.content['text'], 
    }) 

その後、次のコードは127.0.0.1:8001の指定されたアドレスにデータを送信します。

pip install websocket

server-socket.py

import websocket 
import _thread as thread 
import time 

def on_message(ws, message): 
    print(message) 

def on_error(ws, error): 
    print(error) 

def on_close(ws): 
    print('Closed Connection') 

def on_open(ws): 
    def run(*args): 
     for i in range(100): 
      time.sleep(1) 
      ws.send("%d" % i) 
     time.sleep(1) 
     ws.close() 
     print ("thread terminating...") 
    thread.start_new_thread(run,()) 


if __name__ == "__main__": 
    websocket.enableTrace(True) 
    ws = websocket.WebSocketApp("ws://127.0.0.1:8001", 
           on_message = on_message, 
           on_error = on_error, 
           on_close = on_close) 
    ws.on_open = on_open 
    ws.run_forever() 

それは非常に簡単です行うようにしてくださいするためにあなたがPython用のWebSocketのパッケージが必要となりますのでご注意ください。それは接続されたwebsocketに0-99の範囲の数値を送信します。

関連する問題