クラウド経由でPaPeRo iを制御する-WebSocket中継5-IBM Cloud編

Tornado/Heroku編の複数同時中継可能なサーバを、IBM Cloudのライト・アカウントで動かしてみます。今回もUbuntu16.04で作業しました。

手順

(1) Cloud Foundryアプリの作成
Python/Tornadoのプログラムを動かすためには、カタログからCloud Foundry アプリのPythonを選択し、名前を決めて作成します。ここではpaperoi-relay-serverとします。同じ名前では作成できないので独自の名前を決め、以後読み替えてください。メモリは256Mまで指定できますが、64Mとしました。
(2) CLIインストール
アプリを作成すると表示される「開始」ページの、「Bluemixコマンド・ライン・インターフェースのダウンロード」ボタンからインストーラーをダウンロードして表示されている手順通りに実行します。bxコマンドが使用できるようになります。
(3) ログイン

bx login

(4) ターゲットの指定

bx target –cf

(5) ファイルの用意
新しいディレクトリを作成して必要なファイルを用意します。

Procfile:

web: python wsrelaysvr.py –port=$PORT

manifest.yml:


applications:
– name: paperoi-relay-server
random-route: true
memory: 64M

requirements.txt:

tornado==4.5.3

runtime.txt

python-3.6.2

setup.py:

setup(
name=’paperoi-relay-server’,
version=’0.0.0′,
description=’paperoi relay server’,
)

wsrelaysvr.py:
Tornado/Heroku編と同じ。

(6) デプロイ

bx app push paperoi-relay-server

(7) アプリの停止

bx app stop paperoi-relay-server

(8) アプリの起動

bx app start paperoi-relay-server

(9) アプリの状態表示

bx app list

補足

  • できてしまえば簡単ですが、意外に情報が検索し辛く苦労しました。Cloud FoundryはOSSのPaaS基盤でAzureなどでも採用されているそうで、そのオリジナルのcfコマンドの使用例が見つかるのですが、IBM Cloudでは現在はbxコマンドを使うということの様です。
  • IBM CloudではWebSocketコネクションは約2分使われないと切断される様でした。パペロアプリは定期的にキープアライブパケット(send_get_led_status等が良いと思います)を送信する機能を実装する必要があります。