@alex_devPY

Как поставить timeout?

Здравствуйте.
Есть process.bat

@ECHO OFF
start /B python  script1.py
start /B python  script2.py
:LOOP
tasklist | find /i "python.exe" >nul 2>&1
IF ERRORLEVEL 1 (
  GOTO CONTINUE
) ELSE (
  ECHO script is still running
  Timeout /T 5 /Nobreak
  GOTO LOOP
)
:CONTINUE
python script3.py


Я запускаю одновременно script1 и script2 , жду пока они выполнятся и выполняю script3.

Как мне поставить отдельно таймаут на script1 и script2 в bat?

Если скрипт выполняется больше, чем N секунд - процесс удаляется.

Что то вроде
start /B python script2.py /t 600 exit
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
@yellowmew
Cloud infrastructure, monitoring engineer. SRE
вот странно, у вас питоновские скрипты, в питоне есть множество способов организовать контролируемый таймаут выполнения субскрипта, но вы хотите cmd\bat
import subprocess
try:
    r = subprocess.run(['python', 'script2'], timeout=5)
except subprocess.TimeoutExpired as e:
    print(e)
try:
    r = subprocess.run(['python', 'script1'], timeout=50)
except subprocess.TimeoutExpired as e:
    print(e)


Вот странно, у вас windows,почти в любой windows есть powershell, отлично умеющий управлять процессами, но вы хотите cmd\bat
$p1=start 'python  script1.py' -PassThru -NoNewWindow
$p2=start 'python  script2.py' -PassThru -NoNewWindow
$p1 | Wait-Process -Timeout 10 -ErrorAction SilentlyContinue -ErrorVariable t1;if ($t2) { $p1 | kill}
$p2 | Wait-Process -Timeout 500 -ErrorAction SilentlyContinue -ErrorVariable t2;if ($t2) { $p2 | kill}


Может быть стоит прекратить разврат и закопать стюардессу?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sHARek
Win+r => cmd => timeout /? - ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы