2017-10-20 73 views
0

我有一個按順序運行多個Python腳本的應用程序。我可以在運行這些碼頭工人,組成如下:Nomad中的多個bash命令

command: > 
    bash -c "python -m module_a && 
    python -m module_b && 
    python -m module_c" 

現在我,調度在遊牧的工作,並且在配置中加入下面的命令碼頭工人司機:

command = "/bin/bash" 
args = ["-c", "python -m module_a", "&&"," 
     "python -m module_b", "&&", 
     "python -m module_c"] 

但遊牧似乎以逃脫&&,只是運行第一個模塊,併發出退出代碼0.有沒有什麼辦法可以運行類似於docker-compose的多行命令?

+0

的''&&作爲一個額外的參數給shell傳遞,而不是代碼運行。 –

回答

1

下保證與exec司機的工作:

command = "/bin/bash" 
args = [ 
    "-c",             ## next argument is a shell script 
    "for module; do python -m \"$module\" || exit; done", ## this is that script. 
    "_",             ## passed as $0 to the script 
    "module_a", "module_b", "module_c"      ## passed as $1, $2, and $3 
] 

注意只有一個參數作爲一個腳本傳遞 - 一個緊跟-c。隨後的參數是該腳本的參數,而不是其他腳本或腳本片段。


即使是簡單的,你可以運行:

command = "/bin/bash" 
args = ["-c", "python -m module_a && python -m module_b && python -m module_c" ] 
+0

嘿,謝謝,我實際上嘗試過,但任一方法導致退出代碼2:'退出代碼:2,退出消息:「碼頭集裝箱退出非零退出代碼:2」' – seemvision

+0

我不假設它'-xc'而不是'-c'(因此日誌記錄命令運行到stderr)可能是有啓發性的? –

+0

(如果沒有日誌說明,否則「退出代碼:2」可能意味着其中一個Python模塊已成功啓動,然後由於之前的環境與此環境之間的環境或安裝差異而退出該狀態。) –