2017-09-05 27 views
-1

首先,我在编程方面很新颖。 我想从bash shell中如何通过使用python烧瓶保存shell的输出

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

这条线将返回数据,如本地的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 

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

+0

参见:https://stackoverflow.com/q/4760215/4110233 – TheChetan

+0

我是有点困惑;你是否试图保存*传入*请求中的数据?或者你想查询url1并从中返回数据?我的理解是Flask的request是用于前者,而你可能想为后者使用'requests'模块。看看你的代码,似乎'请求'是你想要的,而不是Flask的'请求' – evamvid

回答

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是相当的web框架,它是非常有用的创建网站,应用程序接口,Web应用程序等,这是非常有用的,但我不认为你需要为你在做什么试图实现。

更多信息有关requestsFlask

+0

非常感谢!第一种方法奏效。我想实现烧瓶的原因是因为我想通过使用这些数据来制作Web应用程序。我想我会在稍后实施烧瓶。我对烧瓶或蟒蛇不太熟悉...... –

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