我是Fabric的新手,并且想在远程计算机上运行长时间运行的脚本,到目前为止,我一直在使用如下代码:
import fabric
c = fabric.Connection("192.168.8.16") # blocking
result = c.run("long-running-script-outputing-state-information-into-stdout.py")
是否有一种方法可以异步读取stdout,而不是使用只能在命令完成后才能使用的'result'对象?
答案 0 :(得分:0)
如果要使用结构远程执行某些操作,则首先要遵循以下结构进行连接:
const sum = ({ x, y }) => x + y;
class Adder extends React.Component {
state = { sum: 0, x: 0, y: 0 };
static getDerivedStateFromProps(props) {
return { sum: sum(props), x: props.x, y: props.y };
}
render() {
const { sum, x, y } = this.state;
return (
<div>
<h3>
{x} + {y} ={" "}
</h3>
<h1 style={{ color: "green" }}>{sum}</h1>
</div>
);
}
}
class App extends React.Component {
state = { x: 0, y: 0 };
render() {
return (
<div className="App">
<button onClick={() => this.setState(state => ({ x: state.x + 1 }))}>
Increase left parameter
</button>
<button onClick={() => this.setState(state => ({ y: state.y + 1 }))}>
Increase right parameter
</button>
<Adder x={this.state.x} y={this.state.y} />
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
这将输出整个输出,而不管您在做什么!
您必须使用@task(hosts=["servername"])
def do_things(c):
with connection(host=host, user=user,) as c:
c.run("long-running-script-outputing-state-information-into-stdout.py")
以确保您运行的所有内容都将在该连接上下文中运行!