我有一个想要在本地调试的应用程序。为此,我必须首先运行 Consul
(它是一个 jar
),然后我必须调用 2 个两个 REST API
方法,因此我调用两个 POST。然后我启动 elasticmq-server
并调用 8
GET
。
目前,我已在 bat
文件中启动 jar
,但这使得它对于 UNIX
毫无用处。我尝试了以下方法:
subprocess.call(['java', '-jar', 'elasticmq-server-0.8.12.jar'], shell=True)
但它没有按我想要的方式工作。我希望双击 script.py 后 jar
在单独的控制台中启动。是否可以?下面我附上最小完整可验证示例
:
我的代码
import subprocess
import time, sys
import requests
subprocess.call(['java', '-jar', 'elasticmq-server-0.8.12.jar'], shell=True)
#call("my.bat") - it works on Windows, but not on Linux
time.sleep(5) #elastic must complete launch - it usually takes 1024 milsec, so I w8 5 just in case.
requests.get('http://localhost:8888/?Action=CreateQueue&QueueName=top-secret')
requests.get('http://localhost:8888/?Action=CreateQueue&QueueName=top-secret2')
requests.get('http://localhost:8888/?Action=CreateQueue&QueueName=top-secret3')
requests.post('http://127.0.0.1:7777/some/catalogs/register', data = {"JSON WITH DATA FOR CONSUL")
预期行为
- 双击启动脚本。
- 在新控制台中启动 consul,
- 在新控制台中启动弹性,
- 等待 2-5 秒 - 它已经可以工作了。
- 调用请求 - 已经可以使用。
最佳答案
我知道事实上,你无法在 Windows 和 Linux 之间移植上述 call
方法。您必须寻找其他解决方案。
关于java - 用于启动和配置多个程序的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38913256/