В flask-restplus
или, альтернативно, flask
, я хочу вызвать свою пользовательскую функцию, которая вызывается запросом POST
, где метод POST передает параметр в пользовательскую функцию, затем функция принимает параметр и выполняет вычисление. возвращает вывод в конечную точку сервера. Я не совсем уверен, как это сделать, но всю картину процесса я как бы понимаю. Может кто-нибудь показать мне, как это сделать? Есть ли способ сделать это в flask или flask-restplus
? любая мысль?
минимальное flask приложение
вот минимальное приложение flask, которое я написал:
from flask import Flask, jsonify
from flask_restplus import Api, Resource, fields, reqparse, inputs
app = Flask(__name__)
api = Api(app)
ns = api.namespace('ns')
payload = api.model('Payload', {
'num': fields.Integer(required=True)
})
@ns.route('/')
class AResource(Resource):
@ns.expect(payload)
def post(self):
parser = reqparse.RequestParser()
parser.add_argument('num', type=str, required=True)
try: # Will raise an error if date can't be parsed.
args = parser.parse_args()
param = args['num] ## todo: how to pass params to my custom function
## output from custom function, where function would consum param
return jsonify(output)
except:
return None, 400
if __name__ == '__main__':
app.run(debug=True)
Пользовательская функция
Вот пользовательская функция, которую POST-метод собирается вызывать и запускать функцию и возвращать ее вывод в конечную точку сервера:
primest <- function(num){
p <- 2:num
i <- 1
while (p[i] <= sqrt(num)) {
p <- p[p %% p[i] != 0 | p==p[i]]
i <- i+1
}
p
}
update
всякий раз, когда используется метод api post, метод post передает параметр пользовательской функции, затем пользовательская функция выполняет вычисление и возвращает свой вывод в виде объекта json конечной точке сервера. как разработать этот процесс проще? Любая мысль?
и я могу вызвать функцию R из python, используя это:
@ns.route('/')
class Rsession(Resource):
def get(self):
output = subprocess.call(['Rscript','--vanilla','-e','primest.R'])
return {'call function': output}
Я застрял, как я буду передавать и анализировать аргумент для вызова моей пользовательской функции. Как это сделать в flask или flask -restplus? любая возможная мысль? Как я могу вызвать функцию, которая вызывается по запросу POST? есть идеи?