如何使用 curl 从 Flask 应用程序获得响应?
How do you get a response from a Flask app with curl?
我正在使用 AllenNLP 构建 Flask 测试预测器。
我正在将 'passage' 和 'question' 从 .json 文件传递给预测器。
但是,当我使用 curl 传递 json 文件时,它没有 return 响应。 Flask中有没有专门的return来获取?
代码如下:
from allennlp.predictors.predictor import Predictor as AllenNLPPredictor
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/", methods=['GET','POST'])
def hello():
return "<h1>Test app!</h1>"
class PythonPredictor:
def __init__(self, config):
self.predictor = AllenNLPPredictor.from_path(
"https://storage.googleapis.com/allennlp-public-models/bidaf-elmo-model-2018.11.30-charpad.tar.gz"
)
def predict(self, payload):
if request.method == "POST":
prediction = self.predictor.predict(
passage=payload["passage"], question=payload["question"]
)
return prediction["best_span_str"]
Curl 命令如下所示:
curl http://127.0.0.1:5000 -X POST -H "Content-Type: application/json" -d @sample.json
除非我误解了(我猜你是在问如何在你的路线中获得 JSON 提交,以及 return 结果)听起来你需要做一些事情喜欢:
p = PythonPredictor()
@app.route("/", methods=['POST'])
def hello():
data = request.get_json()
result = p.predict(data)
return result
这有效地通过您的 PythonPredictor.predict
方法运行您 sample.json
中的数据,并且 return 将该预测发送给客户端。
请注意,此代码在路由函数之外创建了实例 p
,因此 NLP 模型仅在您的 Flask 应用程序启动时加载(并非在每次请求时加载)。但是看起来这可能会重新下载该文件,除非 AllenNLPPredictor.from_path
进行了一些缓存,因此最好先手动将该文件下载到您自己的存储中,然后从那里加载到 PythonPredictor.__init__
函数。
让我知道是否需要澄清,或者我误解了。
我正在使用 AllenNLP 构建 Flask 测试预测器。
我正在将 'passage' 和 'question' 从 .json 文件传递给预测器。
但是,当我使用 curl 传递 json 文件时,它没有 return 响应。 Flask中有没有专门的return来获取?
代码如下:
from allennlp.predictors.predictor import Predictor as AllenNLPPredictor
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route("/", methods=['GET','POST'])
def hello():
return "<h1>Test app!</h1>"
class PythonPredictor:
def __init__(self, config):
self.predictor = AllenNLPPredictor.from_path(
"https://storage.googleapis.com/allennlp-public-models/bidaf-elmo-model-2018.11.30-charpad.tar.gz"
)
def predict(self, payload):
if request.method == "POST":
prediction = self.predictor.predict(
passage=payload["passage"], question=payload["question"]
)
return prediction["best_span_str"]
Curl 命令如下所示: curl http://127.0.0.1:5000 -X POST -H "Content-Type: application/json" -d @sample.json
除非我误解了(我猜你是在问如何在你的路线中获得 JSON 提交,以及 return 结果)听起来你需要做一些事情喜欢:
p = PythonPredictor()
@app.route("/", methods=['POST'])
def hello():
data = request.get_json()
result = p.predict(data)
return result
这有效地通过您的 PythonPredictor.predict
方法运行您 sample.json
中的数据,并且 return 将该预测发送给客户端。
请注意,此代码在路由函数之外创建了实例 p
,因此 NLP 模型仅在您的 Flask 应用程序启动时加载(并非在每次请求时加载)。但是看起来这可能会重新下载该文件,除非 AllenNLPPredictor.from_path
进行了一些缓存,因此最好先手动将该文件下载到您自己的存储中,然后从那里加载到 PythonPredictor.__init__
函数。
让我知道是否需要澄清,或者我误解了。