2017-09-05 5 views
-1

まず、プログラミングでは非常に新しいです。 私は、この行は、ローカル-IPv4とデータを返すbashシェルからPythonフラスコを使用してシェルからの出力を保存する方法

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

を変数に保存しようとしています。私はこれらの変数を保存するためにphythonとフラスコを使用しようとしています。私は書いた

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の 'request'ではなく' requests'があなたの望むものだと思われます。 – evamvid

答えて

2

物事ためにここにコメントする:

  1. まず、あなたがrequestsを使ってうまくなるだろうと思われます、HTTPリクエストのために強く推奨されるライブラリです。それをあなたができる:testOutput = testRequest()によってあなたはFlaskアプリappの一部のメソッドを呼び出しているので、あなたがruntime error : working outside of the request contextを取得しているエラーに

    import requests 
    url = "http://169.254.169.254/latest/meta-data/" 
    resp = requests.get(url) 
    print resp.text 
    
  2. よろしくを、です。エラーに関連するもう1つの事は、Flaskアプリを実行したことがないことです。これを行うには、コードの最後にこれを含めます。

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

    しかし、再び、Flask等、それはウェブサイトを作成すると便利ですWebフレームワーク、APIは、Webアプリケーション、むしろそれは非常に便利だが、私はあなたがしている何のためにそれを必要とするかもしれないと思います達成しようとしている。 requestsFlaskについて

さらに詳細:

+0

ありがとうございました!最初の方法が働いた。私がフラスコを実装したかった理由は、それらのデータを使ってWebアプリを作りたいからです。私は後でフラスコを実装すると思う。私は非常にフラスコまたはPythonに慣れていない... –

1

HTTP GETリクエストを作成してレスポンスを出力するだけで済むので、Flaskは必要ありません。あなたは、GETリクエスト(https://docs.python.org/3/library/urllib.request.html)を送信するためにurllib標準ライブラリを使用することができます。

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 
関連する問題