3

私はPythonを初めて使用し、localhost(Apache Tomcatによってホストされている)で実行されているJava Webアプリ(WARファイル)が実行されているかどうかを判断するモニターを作成しようとしています。私は以前に実行するスクリプトを考案しました:

ps -aef | grep myWebApp

そして、の結果を調べてgrep、それらの結果にプロセスIDが戻ってきたかどうかを確認しました。

しかし、ホストOSはTomcatプロセスのみを認識し、TomcatがホストしているWebアプリは認識しないことがわかりました。次に、TomcatにターミナルからヒットできるCLIが付属しているかどうかを確認しようとしましたが、答えはノーのようです。

今、私は自分のWebアプリを使用するwgetか、あるいはurllib2Webアプリをヒットさせhttp://localhost:8080/myWebAppて結果を確認することにより、実行されているかどうかを判断することを考えています。これが私の最善の試みwgetです:

wgetCmd = "wget http://localhost:8080/myWebApp"
wgetResults = subprocess.check_output([wgetCmd], shell=True, stderr=subprocess.STDOUT)

for line in wgetResults.strip().split('\n'):
    if 'failed' in line:
    print "\nError: myWebApp is not running."
    sys.exit()

ここでの私の考えは、Webアプリが実行されていない場合、wgetの出力には常に「失敗」という単語が含まれている必要があるということです(少なくとも私の経験から)。残念ながら、これを実行すると、次のエラーが発生します。

Traceback (most recent call last):
File "/home/myUser/mywebapp-mon.py", line 52, in <module>
main()
File "/home/myUser/mywebapp-mon.py", line 21, in main
wgetResults = subprocess.check_output([wgetCmd], shell=True, stderr=subprocess.STDOUT)
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['wget http://localhost:8080/myWebApp']' returned non-zero exit status 4

ここで何が起こっているのか(エラーは何ですか)について何か考えはありますか?また、そしてもっと重要なことに、私はこれを間違った方法で行っていますか?前もって感謝します!

4

3 に答える 3

7

Requestsモジュールを試すことをお勧めします。wget や urllib よりもはるかにユーザーフレンドリーです。次のようなことを試してください:

import requests
r = requests.get('http://localhost:8080/myWebApp')
>>> r.status_code
200
>>> r.text
Some text of your webapp

*編集 *インストール手順http://docs.python-requests.org/en/latest/user/install/

于 2012-10-03T10:25:46.400 に答える
1

URL を確認するには:

import urllib2

def check(url):
    try:
        urllib2.urlopen(url).read()
    except EnvironmentError:
        return False
    else:
        return True

発生したエラーの種類を調べるには、例外インスタンスを確認できます。

于 2012-10-03T11:37:59.310 に答える
0

urllib2/requests を使用して構築し、Tomcat のマネージャー サービスがインストールされている場合は、それと対話することもできます。リストメソッドを使用すると、次の情報を受け取ることができます。

   OK - Listed applications for virtual host localhost
   /webdav:running:0
   /examples:running:0
   /manager:running:0
   /:running:0
于 2012-10-03T12:10:21.583 に答える