如何使用python flask保存shell的输出

时间:2017-09-05 03:50:24

标签: python bash shell flask

首先,我是编程新手。 我想从bash shell中保存一个变量

  >curl http://169.254.169.254/latest/meta-data/

此行将返回local-ipv4等数据。我正在尝试使用phython和flask来保存这些变量。我写了

from flask import Flask, request
app  = Flask(__name__)
@app.route('/')
def testRequest():
  url1 = "http://169.254.169.254/latest/meta-data/"
  name1 = request.get(url1)
  nameText = name1.text
  return nameText

testOutput = testRequest()
print testOutput

但是这给了我运行时错误:在请求上下文之外工作。 有人可以指导我到哪里寻找可能的解决方案吗?

2 个答案:

答案 0 :(得分:2)

要评论的内容:

  1. 首先,使用requests,一个强烈推荐的HTTP请求库,似乎你会很好。有了它,你可以做到:

    import requests
    url = "http://169.254.169.254/latest/meta-data/"
    resp = requests.get(url)
    print resp.text
    
  2. 关于您收到的错误runtime error : working outside of the request context,是因为testOutput = testRequest()您正在调用属于Flask应用app的方法。与错误相关的另一件事是您从未运行过Flask应用。为此,请在代码末尾包含此内容。

     if __name__ == '__main__':
        app.run()
    

    但同样,Flask更像是一个网站框架,它对创建网站,API,网络应用程序等很有用。它非常有用,但我认为你可能不需要它。试图实现。

  3. 有关requestsFlask的详细信息:

答案 1 :(得分:1)

由于您只需要发出HTTP GET请求并打印响应,因此您不需要Flask。您可以使用urllib标准库发送GET请求(https://docs.python.org/3/library/urllib.request.html):

import urllib.request

def testRequest():
  url1 = "http://169.254.169.254/latest/meta-data/"
  response = urllib.request.urlopen(url1)
  nameText = response.read().decode('utf-8')
  return nameText

testOutput = testRequest()
print testOutput