Python脚本,用于启动和配置多个程序

时间:2016-08-12 08:23:22

标签: java python scripting subprocess python-requests

我有一个我想在本地调试的应用程序。为此,我必须首先运行Consul(这是jar),然后我必须调用2个REST API方法,因此我调用了两个POST。然后我启动elasticmq-server并致电8 GET s。

目前我已在jar文件中启动bat,但这对UNIX无效。我尝试了以下方法:

subprocess.call(['java', '-jar', 'elasticmq-server-0.8.12.jar'], shell=True)

但它不能按我的意愿工作。双击script.py后,我希望jar在单独的控制台中启动。可能吗?下面我附上Minimal Complete Verifiable Example

我的代码

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")

预期行为

  1. 双击启动脚本。
  2. 在新的控制台中启动领事
  3. 在新控制台中启动弹性,
  4. 等待2-5秒 - 它已经有效了。
  5. 通话请求 - 它已经有效。

2 个答案:

答案 0 :(得分:1)

我知道,您无法在Windows和Linux之间移植所述call方法。你必须寻找另一种解决方案。

答案 1 :(得分:0)

a2 - last match /a/ b c - first match /c/ 模块特别支持使用startupinfo在Windows上处理新窗口创建。 在* nix和Linux上,您希望实际生成一个新的终端模拟器,因此您可以调用以下内容: subprocess ....但这可能不适用于Mac ...... 而且您需要有效地测试您所使用的操作系统。