2017-11-21 26 views
1

私は、私のdjangoアプリケーションがリモートコンピュータでTCP/IPソケットを使って通信するようにしたいので、そのソケットをいつでも利用できるようにしたいと思います。ライブラリを使用したいです竜巻。私はビューやモデルなどを書くことだけに精通しているので、私はそれを自分のコードベースにどこに収めるべきかについて完全にはわかりません。Django TCPサーバーと竜巻

私は、竜巻のサーバー(http://tornado.readthedocs.io/en/latest/tcpserver.html参照)を実行する管理コマンドを書くことを考えていましたが、管理コマンドが終了したらどうすれば私のサーバー上で.stop()を呼び出すことができますか?私は、私の管理コマンドを終了するときに終了しないスレッドを生成するか、複数のオープンソケットで終了させることは望ましくありません。

もちろん私はリスナーが私のdjangoプログラムのどこかに常駐し、管理コマンドコード内だけでなく、そこにアクセスできるようにしたいと思います。私はdjangoの設定からクラスをインポートすることを考えていました。

私は正しい方向に考えているのですか、それとも別のより良いアプローチがありますか?

編集:私はこれをしたいと思う理由として:

私はと通信したいマイクロコントローラを持っている、と私はそれにHTTPを解析/実装行きたくないだろう、と私は希望定期的に接続が生きているという表示を送信するのが好きで、HTTPはやり方のようには見えません。

+0

あなたは正確に何をしようとしているかは言及していません。なぜあなたは* ""リモートコンピュータとのTCP/IPソケットを使って通信する必要がありますか? – xyres

+0

@xyresはオリジナルの質問を説明付きで編集しました – Nirri

+0

さて、管理コマンドが存在すると、なぜサーバーを停止したいのですか?永続的なTCP接続を常に開いておきたいのですか?つまり、あなたのコマンドが実行されている間だけTCP接続を開いておきたい場合は、本当にTornadoは必要ありません。管理コマンドファイルで 'socket'ライブラリを使用してTCPソケットを作成するだけです。したがって、管理コマンドが終了すると、ソケットも閉じます。 – xyres

答えて

0

管理コマンドは素晴らしいアプローチですが、私はそれを使用してサーバを起動するのを嫌っています。トルネードサーバは、多くの状態(nginx、apache、HAProxyなどのコードベースの外の状態を含む)とさまざまな状態を持つ複雑なものです。管理コマンドは、このすべてを処理するようには設計されていません。

これはおそらく開発にとってはいいことですが、この場合は、コマンドのすぐ前にIOLoop.current().start()を呼び出して、管理コマンドをサーバーの前に簡単に終了させることができます。

生産環境では、Docker Composeのような現代的なオーケストレーションツールを使用することをお勧めします。また、複数のマシン、Docker SwarmまたはKubernetesにシステムをスパンさせることをお勧めします。これらのツールを使用すると、一連の管理コマンドを使用してホイールを改革することなく、信頼性の高い方法で個々のコンポーネントの稼動を開始、停止、スケール調整、および状態の確認を行うことができます。

どちらの場合でも、あなたのTornadoコードがDjangoと同じ場所にある場合は、able to access the database using your Django modelsであり、プロジェクトの他の部分を再利用します。それ以外にも、実行中のDjangoサーバーを使用している管理コマンドdoesn't get any advantagesから何かが起動しました。

+0

意味私はおそらく私のリモートマシンとの通信のための純粋なPythonコードを作成する方が良いでしょうか?私はどのようにしてdjangoと通信できますか?私の管理コマンドをサーバーの前に出さないということについては、私は理解できませんでしたか? – Nirri

+0

@ニーリー私はむしろ、DjangoとTornadoの2つの実行可能な部分を持つ単一のコードベースについて考えています。オーケストレーションのいくつかの並べ替えは、ジャンゴコマンドではなく、両方の側面を起動する世話をする必要があります - あなたは基本的に竜巻の部分を少し制御することができます。ジャンゴ・トルネード通信に関しては、私が言ったように、それは共有DBになる可能性があります。それはHTTP APIが竜巻にさらされる可能性もあります。それはあなたが設定している正確な要件に依存します。 – Vovanrock2002

+0

オーケストレーションは私に竜巻を制御する方法を教えてください。 @ Vovanrock2002 – Nirri

関連する問題