2016-08-12 54 views
0

我有一個應用程序,我想本地調試。爲此,我必須先運行Consul(這是一個jar),然後我必須調用兩個兩個REST API方法,所以我打電話給兩個POST s。然後我啓動elasticmq-server並致電8GET s。Python腳本啓動和配置幾個程序

目前我已在bat文件中啓動jar s文件,但它使其對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. 呼叫請求 - 它已經工作。

回答

1

我知道一個事實,那就是你不能在Windows和Linux之間移植所說的call方法。你必須尋找另一個解決方案。

0

subprocess模塊具有特定的支持,以處理Windows上的新窗口創建startupinfo。 在* nix和Linux上,你想實際產生一個新的終端仿真器,所以你可以這樣打電話: x-terminal-emulator -e 'bash -c "sleep 20"' ....但這可能不會在Mac上工作... 而且你需要有效地測試你是哪個操作系統上。