TornadoとRabbitmqを使用してPythonで記述されたAMQPプロトコル(Rabbitmq Message Broker)に基づくチャットシステム/チャットシステム。
リンク: http://rabbitchat.readthedocs.io/en/latest/index.html
リンク: https://pypi.python.org/pypi/rabbitchat
| 著者: | Anirban Roy Das |
|---|---|
| メール: | [email protected] |
| 著作権(c): | 2017、Anirban Roy Das <[email protected]> |
完全な著作権通知については、 rabbitChat/LICENSEファイルを確認してください。
Rabbitchatは、LANでチャットするためにローカルにセットアップできる非常にシンプルなチャットサーバーです。特定の時間に同時に接続されているすべての参加者の間でのパブリックチャットの両方をサポートし、それらの個々の参加者に賭けるプライベートチャットもサポートします。
AMQPプロトコルを使用して、リアルタイムメッセージパスシステムを実装します。 AMQPは多くの言語で実装されており、多くのソフトウェアでは、AMQPプロトコルを実装するメッセージブローカーであるRabbitMQが1つです。
接続は、SOCKJSプロトコルを使用して作成されます。 SOCKJSは多くの言語で実装されています。主にJavaScriptでリアルタイムでサーバーと通信し、クライアント(ブラウザー)とサーバーの間に二重方向接続を作成しようとします。 Ther Serverは、 SOCKJSプロトコルも実装する必要があります。したがって、TornadoサーバーでSockJSプロトコルを公開するSockjs-Tornadoライブラリを使用します。
最初にWebSocket接続を作成しようとします。失敗した場合、 AJAX 、長いポーリングなどの他の輸送メカニズムにフォールバックします。接続が確立された後、竜巻サーバー**(Sockjs-Tornado)**は、 AMQP Pythonクライアントライブラリ、Pikaを使用したAMQPプロトコルを介してRabbitMQに接続します。
したがって、接続は、竜巻のWebブラウザーであり、 rabbitmqからその逆です。
| sockjs-client: | 高度なWebSocket JavaScriptクライアント |
|---|---|
| 竜巻: | Async Python Webライブラリ + Webサーバー |
| Sockjs-Tornado: | 竜巻のSockjs WebSocketサーバーの実装 |
| AMQP: | メッセージ指向のミドルウェアで使用される事前メッセージキューイングプロトコル |
| ピカ: | AMQP Pythonクライアントライブラリ |
| rabbitmq: | AMQPを実装するメッセージブローカー |
| pytest: | Pythonテストライブラリとテストランナーが素晴らしいテストDiscoberyを使用しています |
| pytest-flask: | Pytest Libraryを使用してFaskアプリをテストするためのFlaskアプリ用のPytestプラグイン。 |
| Uberのテストダブル: | Pythonのダブルライブラリをテストします。これは、模擬ライブラリに代わる優れた選択肢です |
| ジェンキンス(オプション): | 自己ホストされたCIサーバー |
| Travis-CI(オプション): | オープンソースプロジェック用にホストされたCIサーバーは無料です |
| Docker: | より良いDevOpsのためのコンテナ化ツール |
インストールには2つのタイプがあります。 PIPからインストールし、ローカルマシンでアプリケーションを直接実行することにより、Rabbitchatをバイナリとして使用します。別の方法は、Dockerからアプリケーションを実行することです。したがって、Dockerユースケースの別のインストール手順。
gitを介して秘密と機密データの漏れを保護するには、githubリポジトリにコミットして、 git-secrets確認してください。
このGit Secretsプロジェクトは、誤って秘密の漏れを防ぐのに役立ちます。
テクノロジーの仕様で言及されているテクノロジーは非常に多くありますが、依存関係は2つだけです。これがDockerの力です。
ステップ1- Dockerをインストールします
Dockerを使用するように開発環境を設定するとともに、DevOpsとスクリプトに関連するすべてが言及されている別のGitHubプロジェクトに従ってください。
- プロジェクト:https://github.com/anirbanroydas/devops
ステップ2-インストールmake
#(Mac OS) $ Brew Install Automake #(ubuntu) $ sudo apt-getアップデート $ sudo apt-getインストールmake
ステップ3-依存関係をインストールします
さまざまなスクリプトで使用されるローカル開発マシンに次の依存関係をインストールします。
$ pipインストールrabbitchat
上記の依存関係が上記のコマンドによってインストールされない場合は、以下の手順を使用して1つずつインストールします。
ステップ1-ピップをインストールします
PIPをインストールするための以下の方法に従ってください。そのうちの1つは、システムにPIPをインストールするのに役立ちます。
- 方法1 -https: //pip.pypa.io/en/stable/installing/
- 方法2- http://ask.xmodulo.com/install-pip-linux.html
- 方法3-
brew install pythonした場合、 PytonとともにPIPがすでにインストールされています。ステップ2-竜巻をインストールします
$ PIPインストールTornadoステップ3-Sockjs -Tornadoをインストールします
$ pipインストールSockjs-tornadoステップ4- PIKAをインストールします
$ pipインストールpikaステップ5- rabbitmqをインストールします
Macユーザー向け1. brewインストールrabbitmq
$ brewインストールrabbitmq
- rabbitmqを構成し、このリンク、このリンク、これに従ってください。
Ubuntu/Linuxユーザー向け1. rabbitmqアプリケーションリポジトリを有効にします
$ echo "deb http://www.rabbitmq.com/debian/ Testing main" >> /etc/apt/sources.list2.パッケージの確認キーを追加します
$ wget -o http://www.rabbitmq.com/rabbitmq-singe-key-public.asc | sudo apt -key add-3.上からの新しい追加でソースを更新します
$ apt-getアップデート4。そして最後に、rabbitmqをダウンロードしてインストールします
$ sudo apt-get install rabbitmq-server
- rabbitmqを構成し、このリンク、このリンク、これに従ってください。
CIセットアップ(Travis、Jenkinsなど)でプロジェクトを使用している場合は、Githubへのすべてのプッシュで、Travis BuildまたはJenkins Pipelineをセットアップできます。 Travisは.travis.ymlファイルを使用し、JenknisはJenkinsfileを使用して仕事をします。これで、Travisを使用している場合は、Travis固有のセットアップコマンドを実行し、Jenkinsの場合はJenkins固有のセットアップコマンドを最初に実行します。両方を使用して、そこのパフォーマンスを比較することもできます。
セットアップキーは、すべての環境変数がエクスポートされる.envファイルから値を読み取ります。ただし、 envファイルではなく、 .envファイルの例に気付くでしょう。 envファイルを.envにコピーし、実際の値で実際の変数を変更/変更してください。
.envファイルは、GITにはGITにコミットされていません。これは、機密データの漏れを防ぐために.gitignoreファイルに記載されているためです。
セットアップコマンドを実行すると、多くの安全なキーが表示されます。進行する前に、それらを構成ファイルにコピーします。
注:これは1回限りのセットアップです。注: scripts/ディレクトリ内のセットアップスクリプトをチェックして、暗号化されたキーが提供されている環境変数が何であるかを理解します。注:セキュアキーを.travis.ymlまたはJenkinsfileにコピーすることを忘れないでください
注: env to .envファイルのコピーを実行したくない場合は、実際の値を使用して.envの変数値を変更したくない場合は、 travis-setup.shまたはjenknis-setup.shスクリプトを編集し、値を直接更新できます。スクリプトは、 scripts/プロジェクトレベルのディレクトリにあります。
重要:リモートサーバーに展開する前に、ローカルマシンでtravis-setup.shスクリプトまたはjenkins-setup.shスクリプトを実行する必要があります。
これらの手順は、環境変数を暗号化して、APIキー、Dockerベースのキーなどの機密データを保護し、特定のキーを展開します。
$ travis-setupを作成します
これらの手順は、環境変数を暗号化して、APIキー、Dockerベースのキーなどの機密データを保護し、特定のキーを展開します。
$ Jenkins-Setupを作成します
使用法には2つのタイプがあります。 PIPからインストールし、ローカルマシンでアプリケーションを直接実行することにより、Rabbitchatをバイナリとして使用します。別の方法は、Dockerからアプリケーションを実行することです。したがって、Dockerユースケースの別の使用手順。
上記の依存関係をインストールし、オプションを実行した後(CIサーバーを使用していない場合)、または必要な(CIサーバーを使用している場合) CIセットアップステップを実行した後、次のコマンドを実行して使用するだけです。
ローカル開発マシンでアプリを実行してテストするか、リモートマシンで直接実行してテストすることができます。生産環境で実行およびテストすることもできます。
以下のコマンドは、開発環境ですべてのものを開始します。生産環境から開始するには、すべてのメイクコマンドに接尾辞-prod 。
たとえば、通常のコマンドがmake startいる場合、生産環境では、 make start-prod使用します。生産環境で実行する各コマンドにこの変更を行います。
例外:テストコマンドに上記の方法を使用することはできません。テストコマンドはすべての環境で同じです。また、 make system-pruneコマンドは、生産なしの変動がないスタンドアロンです(すべての環境で同じままです)。
アプリケーションを開始します
$きれいにします $ビルドを作成します $開始を行います # または $ docker -compose up -d
アプリケーションを停止します
$停止します # または $ docker-compose Stop
アプリケーションを削除してクリーニングします
$きれいにします # または $ docker -compose rm - force -v $ echo "y" | Docker System Prune
クリーンシステム
$ make system-prune # または $ echo "y" | Docker System Prune
アプリケーションログ全体を確認します
$チェックログを作成します # または $ docker-composeログ - フォロー - テール= 10
Pythonアプリのログのみを確認します
$ check-logs-appを作成します # または $ docker-composeログ - フォロー - テール= 10識別
PIPでRabbitchatをインストールした後、次のコマンドを実行するだけで使用します。
rabbitmqサーバー
Macユーザーの場合
#正常に開始します $ rabbitmq-server #バックグラウンドで実行したい場合 $ rabbitmq-server-デタッチ #Brew Rervicesの使用を開始します(TMUXで動作しません) $ Brew Services Rabbitmq Start
2。Ubuntu Ubuntu/LInuxユーザーの場合
#正常に開始します $ rabbitmq-server #バックグラウンドで実行したい場合 $ rabbitmq-server-デタッチ #サービスの使用を開始します $ service rabbitmq-serverスタート #サービスの使用を停止する $ service rabbitmq-server stop #サービスを使用して再起動します $ service rabbitmq-server再起動 #ステータスを確認するには $ service rabbitmq-serverステータス
Rabbitchatサーバーを開始します
$ rabbitchat [options]
オプション
| - ポート: | チャットサーバーが起動するポート番号 |
|---|
例
$ rabbitchat -port = 9191
rabbitchatサーバーを停止します
Ctrl+Cをクリックしてサーバーを停止します。
注:テストは、Dockerメソッドを使用してのみ行われます。とにかく、Dockerメソッドを使用してアプリケーションを実行するか、スタンドアロンメソッドを使用しても関係ありません。テストはそれから独立しています。
現在、テストはプロジェクトの主な取引です。以下のコマンドに記載されているように、多くの方法でテストすることができます。これは、すべてを自動化し、テストライブラリやフレームワークが使用されているもの、直接またはmakeコンテナを介してテストがどのように発生しているか、またはdockerを使用して異なる仮想環境のいずれかtox知る必要はありません。何も知らない必要はありません。
一方、テストを細かく制御する場合は、 pytestコマンドを使用するか、 toxコマンドを介して異なるPython環境で実行するか、 docker-composeコマンドを使用してDiffereTnテストを実行することで、直接実行できます。
しかし、Makeコマンドを実行することは、このプロジェクトの戦略と再会のアプローチに行くことです。
注: TOXは、 dockerコンテナが使用されない場所で直接使用できます。 makeコマンドを使用してテストを実行するために使用しているテストコンタイナー内でtoxを実行しようとすることはできますが、 Dockerfile変更して、 python2.7 、 python3.xなどのすべてのpython依存関係をインストールし、 dockerコンテナ内からtox pytestを実行する必要があります。
警告: Makeコマンドを直接使用し、 toxを使用しないことの唯一の注意点は、単一のpython環境であるNameley python 3.6でのみプロジェクトをテストしていることです。
すべてをテストします
$テストします
Makeを使用せずに他の方法では、多くのコマンドを書くことが含まれます。したがって、Makeコマンドを好むように使用してください
ユニットテストを実行します
$ make test-unit
コンポーネントテストを実行します
$テスト成分を作成します
契約テストを実行します
$テスト契約を作成します
統合テストを実行します
$テスト統合を行います
エンドツーエンド(E2E)またはシステムまたはUIの受け入れまたは機能テストを実行する
$ make test-e2e # または $テストシステムを作成します # または $ test-ui-acceptanceを作成します # または $テスト官能的