首先,我是编程新手。 我想从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
但是这给了我运行时错误:在请求上下文之外工作。 有人可以指导我到哪里寻找可能的解决方案吗?
答案 0 :(得分:2)
要评论的内容:
首先,使用requests
,一个强烈推荐的HTTP请求库,似乎你会很好。有了它,你可以做到:
import requests
url = "http://169.254.169.254/latest/meta-data/"
resp = requests.get(url)
print resp.text
关于您收到的错误runtime error : working outside of the request context
,是因为testOutput = testRequest()
您正在调用属于Flask
应用app
的方法。与错误相关的另一件事是您从未运行过Flask
应用。为此,请在代码末尾包含此内容。
if __name__ == '__main__':
app.run()
但同样,Flask
更像是一个网站框架,它对创建网站,API,网络应用程序等很有用。它非常有用,但我认为你可能不需要它。试图实现。
有关requests
和Flask
的详细信息:
答案 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