У меня есть ситуация, когда я хотел бы запустить два сторожевых таймера Python последовательно на этапе Azure Release, а затем продолжить выполнение следующих задач.
Как я понимаю, subprocess.Popen
- это путь к go, если вы хотите создать такое поведение "огонь и забыть", например, когда я запускаю что-то вроде subprocess.Popen(["python", "mywatchdog1.py"])
за пределами Azure, оно ведет себя как я и ожидал, он «запускает и забывает» , но при выполнении того же вызова из задачи (пробовал с «Powershell» и «Run Python Script») в Azure Devops, задача останавливается и ждет завершения процесса наблюдения до sh.
Вот пример:
# mywatchdog1.py
import time
import os
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
class MyWatchdogEventHandler(LoggingEventHandler):
def dispatch(self, event):
print(f"A new dog was created")
if __name__ == "__main__":
dog_file_path = "c:\\dogs"
event_handler = MyWatchdogEventHandler()
observer = Observer()
observer.schedule(event_handler, dog_file_path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Это то, что я пытаюсь запустить, используя что-то вроде:
import subprocess as sp
if __name__ == "__main__":
sp.Popen(["python", "C:\\scripts\\mywatchdog01.py"])
Итак, как мне заставить subprocess.Popen
вести себя одинаково, независимо от того, работаете ли вы локально или на агенте Azure Windows 2016? Любая помощь будет принята с благодарностью.
/ Никлас