2017-11-06 8 views
1

私は現在、複数のアプリケーション/スクリプトで構成される複雑なPythonプロジェクトを設計しようとしています。まず、複数のリモートおよび/またはローカルエージェントからデータを受信する中央エンジン(サーバー)。これらのエージェントはいくつかのタスクを処理します。エンジンは常にホスト上のデータベースに接続され、すべてのリモートタスクに関する情報が格納されます。さらに、サーバーやWebアプリケーションのデスクトップクライアントなどの追加ツールをエンジンまたはDBに接続して、インフラストラクチャ全体の現在の状況を表示することもできます。ソケットを使ったPythonサーバーエージェントアプリケーションの設計、あるいはおそらくREST?

まず、私はマルチスレッドソケットを使用することを考えましたが、これはもっと深く発見するつもりです。しかし、私はREST APIのアイデアを見つけました。

私はこれらの主題の両方にかなり新しいので、私は自分のプロジェクトに合った適切な解決策を見つけようとしています。そのような場合にREST APIフレームワークを使用することに対するあなたの意見は? RESTはセキュリティの点で追加のソリューションを提供しています。エンジン、データベース、および前述のツールを操作するには本当に柔軟性があります。ソケットを使用している間は、ネットワークの概念、すなわち最も効率的な方法でソケットを利用する方法を知る必要があります。

REST APIは、FlaskやDjangoのようなWeb開発フレームワークで主に提供されているようです。 Webアプリケーションの開発中にのみ使用することをお勧めしますか? 私のAPIがアプリケーション自体にしか利用できない場合、私はプロジェクトとエンジンとエージェントの間でJSriでデータを双方向に送信するためのメインインターフェイスとしてこのAPIを使用しますか? POST要求をエージェントに送信して特定のアクションを実行することは可能でしょうか?

私はこれを達成するのに役立つ別の解決策を知っていますか? 多分私はここで間違った方向にいるのでしょうか?

私はここpossibilitesのこの洪水で迷子にしたくないと私は本当に、あなたの側からの助けをいただければ幸いです:(

ありがとうございました!

+1

すでにFlask [1]を調べましたか?これは、RESTfulなサーバーのための大部分の定型文を処理する比較的単純なライブラリです。 編集:あなたが本当にそれを見たと書いたセクションをスキップしているに違いありません。私はそれを調べる価値があると思います。私があなたに送るリンクは、私がそれを学ぶのに使ったチュートリアルです。 [1]:https://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask – Arne

+0

@ArneRecknagel:はい。私の質問は、そのようなプロジェクトでRESTを使用するのが適切かどうかということに関連しています。 – auun

+0

私は個人的にそうだと思います。 RESTは非常に便利なツールですので、プログラムのエンジニアリングを終えると、あまりにも多くの後悔を感じる必要はありません.RESTの使い方を学びました。 – Arne

答えて

1

私はあなたが依頼する意図したものと仮定しています大まかには、「一連のリモートタスクを管理するためのRESTのメリットとデメリットは何ですか?」これらの行に沿って構造化されるように質問を修正すると、Q &サイトの方がより明確で集中的になります。

RESTでは、APIをリクエストとレスポンスにパッケージ化する方法を提供します。同時に複数のリクエストとクライアントを扱うためのフレームワークを提供します。あなたのタスクがRESTパターンに合っているなら、自然にリソースを整理するのに役立つかもしれません。さらに、HTTPのキャッシングはリソースの負荷を軽減するのに役立ちます。

RESTはHTTPアプリケーション向けです。しかし、HTTPはブラウザのWebアプリケーション以外のものにも使用できます。 requestsのようなライブラリを使用すると、デスクトップアプリケーションまたはバックエンドサーバーアプリケーションからHTTP APIとREST APIを使用できます。

RESTでは、すべてが要求と応答に分解される必要があります。ある程度、要求と接続はステートレスです。つまり、サーバーの実装では、どのユーザーがログインしているかなどの情報を管理する必要があります。APIで何かを行うことが複数のステップのプロセスである場合は、ステップをまとめて分割する方法を理解する必要がありますサーバーとクライアントの間の複数のステップを管理する:RESTはそれを実行しません。

状態がより多くある場合は、ソケットや長期間の接続がRESTよりも優れています。たとえば、sshのようなプロトコルをRESTで実行するように設計することはできますが、それは悪い方法です。 sshでは、サーバにログインし、ネットワーク経由でコマンドラインセッションを共有します。あなたは通常のキーボード入力をセッションに持ち、通常の出力はセッションから戻ってきます。いずれの側もいつでも送信でき、すべてを一緒に接続する必要があります。サーバーとクライアントの両方に状態があり、ワークフローを要求と応答に簡単に分けることはできません。したがって、RESTには適していません。

+0

これは私が探していたアドバイスです!ありがとうございます:)これは非常に有益です。 まず、「依頼」図書館の詳細を調べ、自分の要件に十分かどうかを調べます。デスクトップ/バックエンドサーバーのタスクを実行する際に障害がなければ、私はそれを使用する可能性があります。限界に依存します。 私はRESTのエキストラとして、私たちが将来のHTTPベースのアプリケーションのための認証と柔軟性を報告目的で享受できると考えました。 私は可能性を見つける必要があります。 変更を追跡することは障壁になるかもしれませんが、私は何かを設計しようとします:) – auun

+0

あなたの答えは私の考えを明らかにします。私は今、このデザインに近づく方法について、より良い知識を持っています。もう一度ありがとう! :) – auun

関連する問題