在Azure Devops发布管道中启动Python看门狗

问题描述 投票:-1回答:1

我有一种情况,我想在Azure发布阶段连续启动两个Python看门狗,然后继续执行以下任务。

据我了解,如果您要创建这样的“即发即弃”行为,则可以使用subprocess.Popen当我在Azure外部运行subprocess.Popen(["python", "mywatchdog1.py"])之类的东西时,它的行为符合我的期望,它“ fires&getting”],但是从任务运行相同的调用时(尝试同时使用“ Powershell”和“运行Python脚本“)在Azure Devops中,任务停止并等待监视程序完成。

这里是一个例子:

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

因此,无论您在本地运行还是在Azure Windows 2016代理上运行,我如何使subprocess.Popen行为相同?任何帮助将不胜感激。

/尼古拉斯

python python-3.x azure-devops subprocess python-watchdog
1个回答
0
投票

所以,我如何使subprocess.Popen行为相同,无论是否您在本地运行还是在Azure Windows 2016代理上运行?

抱歉,目前还不支持这种情况。 Azure Devops管道一个接一个地执行任务,直到完成其中所有要完成的工作,它才会完成当前任务。

这就是它挂在PowershellRun a Python Script任务中的原因,因为watchdog始终在监听输入。您可以参考this document了解更多详情。按照设计,如果任务中有诸如watchdog之类的东西在持续监视文件浏览器的更改,则该任务将无法完成。

希望我的回答有助于解决您的难题:)

© www.soinside.com 2019 - 2024. All rights reserved.