teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記

2020/05/29 07:32

投稿

x98000
x98000

スコア1096

answer CHANGED
@@ -1,2 +1,17 @@
1
1
  `subprocess.check_output()`は外部コマンドが終了するまで待機しますから、今のままでは`time.sleep()`にたどり着きません。
2
- 一定時間待つのであれば、`subprocess.check_output()`にtimeoutパラメータを設定し、タイムアウトが発生した場合は`Exception TimeoutExpired`で捕捉できるので、そこで`continue`してはどうでしょうか。
2
+ 一定時間待つのであれば、`subprocess.check_output()`にtimeoutパラメータを設定し、タイムアウトが発生した場合は`Exception TimeoutExpired`で捕捉できるので、そこで`continue`してはどうでしょうか。
3
+ ### 追記
4
+ 元コードが抜粋なので検証できませんが、
5
+ ```python
6
+ while true:
7
+ try:
8
+ #外部コマンド実行
9
+ cmd = ("外部コマンド名")
10
+
11
+ #標準エラー出力も含めた実行結果
12
+ runcmd = subprocess.check_output(cmd.split(),stderr=subprocess.STDOUT, timeout=5)
13
+ break
14
+ except subprocess.TimeoutExpired:
15
+ print("Retry due to timeout!")
16
+ ```
17
+ こんなイメージです。