等到远程服务器中的进程使用 Fabric 完成

Wait until process in remote server finishes using Fabric

设置

我正在使用 Fabric 启动远程服务器上的进程。我的本地服务器执行一个 Python 文件,该文件 运行 按顺序执行三个函数:本地服务器中的第一个和第三个以及远程服务器中的第二个,如下所示。

local_file.py

local_function_1()
remote_function()
local_function_2()

远程函数是在本地指定的fabfile,如下

fabfile.py

from fabric.api import *
@hosts(remote_server)
def remote_function():
    run('python function_on_remote_server.py')

问题

local_function_2 应该 运行 在 remote_function 完成 运行ning 之后,但我不确定如何完成此操作。

我考虑过 (1) 在 local_function_2 运行 之前等待固定的秒数,以及 (2) 添加一个中间本地函数来检查 [=13 的某些输出是否存在=] 在 运行ning local_function_2.

之前

如何延迟本地服务器上的函数的执行,直到远程服务器上的函数完成 运行ning?

实现此目的的一种方法是更改​​您的调用方式 remote_function,并改用 Fabric execute

from fabric.api import execute

local_function_1()
execute(remote_function)
local_function_2()

执行应该阻塞直到任务完成。

有关详细信息,请参阅 Intelligently executing tasks with execute