2015/04/12

Python コマンドプロンプト非表示で Web サーバ起動

[BAT][Python][WSH]
昨日作った wsgiref テスト用バッチファイルの番外編で、何の役にも立ちませんがコマンドプロンプトを非表示にして Web サーバを稼動する例。環境は昨日と同じ Windows 7 32bit + QGIS 2.6 ポータブル版に含まれる Python 2.7 で、ゲストアカウントで動作確認しました。

↓ 昨日と同じ場所に、もう一つバッチファイルを作成。バッチの中に WSH(JScript)を書いて再帰的に実行します。昨日使った START コマンドではコマンドプロンプトを非表示にできないのに対し、JScript では非表示を含めもう少し細かくコマンドプロンプトを制御できます。


↓ バッチファイルの中身。比較のため昨日のも再掲しました。

■ WSGI_Server_NoWindow.bat
@if(0)==(0) echo off

set PYTHONHOME=QGIS/apps/Python27
set PYTHONPATH=QGIS/apps/Python27/Lib
cscript.exe //nologo //E:JScript "%~f0" %*
goto :EOF
@end

var display = 0
// 0 非表示
// 4 非アクティブ、通常
// 7 非アクティブ、最小
// その他は ↓ を参照
// http://3rd.geocities.jp/kaito_extra/Source/ApplicationCtrl.html

var wsh = new ActiveXObject("WScript.Shell")
var dir = wsh.CurrentDirectory
var cmd = "\"" + dir + "/QGIS/bin/python\""
wsh.Run(cmd + " \"" + dir + "/python_script/ctr_server.py", display)
wsh = null


■ WSGI_Server.bat(昨日使ったもの)
@echo off

:: コマンドプロンプトを最小化で起動
:: http://piyopiyocs.blog115.fc2.com/blog-entry-731.html
::
if not "%HOGE%"=="hoge" (
set HOGE=hoge
start /min cmd /c,"%~0" %*
exit
)

set PYTHONHOME=QGIS/apps/Python27
set PYTHONPATH=QGIS/apps/Python27/Lib
"QGIS/bin/python" python_script/ctr_server.py


バッチファイル起動時に一瞬コマンドプロンプトが出て、すぐ消えます。サーバ稼動の確認はタスクマネージャの ↓ python.exe で。サーバ再起動も、昨日と同様に同じバッチファイルで可能。


サーバ停止は、タスクマネージャの「プロセスの終了」から。他と同様に ↓ こんなメッセージが出ます。


↓ コマンドプロンプトを表示すれば、昨日(二つ目の画像)と同様にサーバのステータスが出ます。



JScript での外部プログラム起動と、バッチファイルに JScript を書く方法は下記を参照しました。m(_)m なお三つ目のリンクは、今回は使いませんでしたがバッチから一時的に VBS ファイルを作成して実行する方法。今後使うかもしれないのでメモしておきます。

■ WSH JScriptを使いこなそう 〜アプリケーション操作〜
■ BATとWSHのコードを1ファイルに混在させるためのshebang記法
■ バッチファイルでsleep - ixam
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。