2016-08-12 7 views
0

私はローカルでデバッグするアプリケーションを持っています。これを行うには、まず(jar)を実行しなければなりません。その後、2つのREST APIという2つのメソッドを呼び出す必要があります。したがって、POST 2つを呼び出します。その後、私はelasticmq-serverを立ち上げ、8GETと呼んでいます。いくつかのプログラムを起動して設定するためのPythonスクリプト

jarbatファイルに公開していますが、それはUNIXで役に立たなくなっています。

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

が、私が望むようには動作しません:私は、次のことを試してみました。私はjarがscript.pyをダブルクリックして別のコンソールで起動することを期待しています。出来ますか?私はMinimal Complete Verifiable Exampleを添付して下記

ダブルクリックで動作

  1. 起動スクリプト期待

    私のコード

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

    。新しいコンソールで

  2. 起動領事、新しいコンソールでの弾性
  3. を起動し、
  4. は2-5秒を待って - それは、すでに動作します。
  5. 呼び出し要求 - すでに動作しています。

答えて

1

私は実際には、上記のcallメソッドをWindowsとLinuxの間に移植できないことを知っています。別の解決策を探す必要があります。

0

subprocessモジュールには、Windowsで新しいウィンドウの作成を処理するための特定のサポートがstartupinfoであります。 * nixとLinuxでは、新しい端末エミュレータを実際に起動したいので、 x-terminal-emulator -e 'bash -c "sleep 20"'などと呼ぶでしょう...しかし、これはMacではうまくいかないでしょう... あなたはどのOSが効果的かをテストする必要がありますに。

関連する問題