Python: サーバコマンドをテストできるように簡易的にサーバを立てる


AWS EC2 で作ったファイル処理のサンプルをテストしてもらうために簡易的なサーバを作りました。 そのときの方法をまとめています。


状況

音声認識の処理で、 wav ファイルを処理して結果を別ファイルに出力するコマンドがありました。 必要なコンポーネントを揃えて実行できるようにはしたのですが、まわりの人にコマンドを評価してもらうには、コマンドを簡単に実行できるようにしておく必要がありました。

そこで、あらかじめインストールされている Python を利用して、アップロードされたファイルを処理して、出力されたファイルを読み込み表示するサーバを作りました。

環境

  • AWS EC2
  • Python 2.7.6
  • OS: Ubuntu 64bit 14.04.3 LTS

サーバコード

まずはディレクトリ・ファイルを次のように作ります。

  • server_test/
    • cgi-bin/
      • test.py
    • tmp/ (権限は 777 にしておきます)

そして test.py の中に次のコードを書き込みます。

アップロードされたファイルを tmp/last.wav に保存してコマンドを実行し、 出力されたファイル、 ここでは tmp/last.rec を読み込んで画面に表示します。 コードを見ていただければ分かるとおり、ファイルは同じ名前でどんどん上書きします。 あくまでサーバコードの実行結果をシェアするためのコードですので、たくさんアクセスがあることなんて想定していません。

サーバは、 server_testディレクトリで次のコマンドを実行して起動します。 80番ポートで起動します。

sudoで実行しないと、80番ポートの確保ができません。

ブラウザからアクセスすると画面が表示されます。

コード内のコマンドは、 server_testをカレントディレクトリとして実行されます。

もし、コマンドの標準出力を画面に表示したい場合は次のようにするとうまくいきます。 (もちろん、ファイルにリダイレクトして保存した後、ファイルを読み込む形でもできます。)

標準出力を 変数rec に保存して、 print rec で画面に表示できます。