织物增量标准

时间:2018-11-15 20:23:15

标签: python linux fabric

我是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'对象?

1 个答案:

答案 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") 以确保您运行的所有内容都将在该连接上下文中运行!