2017-09-05 59 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