gpt4 book ai didi

python - 如何在 Python 中检查 wget/urllib2 的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:18 25 4
gpt4 key购买 nike

我是 Python 的新手,我正在尝试编写一个监视器来确定在 localhost(由 Apache Tomcat 托管)上运行的 Java Web 应用程序(WAR 文件)是否正在运行。我之前设计了一个运行的脚本:

ps -aef | grep myWebApp

并检查了 grep 的结果,看看是否有任何进程 ID 在这些结果中返回。

但事实证明,主机操作系统只能看到 Tomcat 进程,看不到 Tomcat 托管的任何 Web 应用程序。接下来,我尝试查看 Tomcat 是否带有我可以从终端访问的任何类型的 CLI,看起来答案是否定的。

现在,我正在考虑使用 wget 或者甚至 urllib2 来确定我的网络应用程序是否正在运行,方法是让它们点击 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()

我的想法是,如果网络应用程序没有运行,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

关于这里发生了什么(错误是什么)有什么想法吗?此外,更重要的是,我是否以错误的方式进行处理?提前致谢!

最佳答案

我建议你试试 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/

关于python - 如何在 Python 中检查 wget/urllib2 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12706437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com