如何停止正在运行的结构尾部任务?

时间:2017-05-05 08:39:12

标签: python flask

我有一个烧瓶服务器,用于运行Fabric任务的api。因此,url / tail的帖子会在多个主机上并行运行尾部,并将结果输出到本地磁盘上的文件中。

@parallel
def tail_task(output_fh, tla, grep):
    tail_cmd = 'tail -F /var/log/someservice/*-server.log | grep -i INFO'
    try:
        sudo(tail_cmd, stdout=output_fh)
    except Exception, e:
        print e.message
        return "FAIL!!"

我打电话给

@app.route('/tail', methods=['POST'])
def tail():
    output_fh = open('tail_output.log', 'w')
    result = execute(tail_task, hosts=hosts_list)

帖子有效,因此对该网址进行后期调用会开始在磁盘上写入文件。我遇到的问题是我不知道如何阻止这项任务。因此,如果呼叫到来,它将永远等待响应,因为sudo(tail_cmd)将不会退出。知道如何阻止它吗?或者我该怎么做呢?

然后,我正在提供一个获取网址,该网址从该文件中读取内容并将其流式传输:

@app.route('/get_tail', methods=['GET'])
def stream():
    def generate():
        with open('tail_output.log') as f:
            while True:
                yield f.read()
                time.sleep(0.01)

    return app.response_class(generate(), mimetype='text/event-stream')

0 个答案:

没有答案