在flask-restplus中,我想将系统调用对象:subprocess.call()
传递到GET
请求,以在服务器端点上打印出R会话信息。为此,我认为我需要将系统调用对象添加到解析器中,希望api端点打印出R会话信息。但是,当我点击代码时,在服务器端点上没有看到任何打印的会话信息。我如何正确地将system.call()
传递给GET
请求,以便在端点上打印出一些内容?有什么主意吗?
我的尝试:
这是系统调用,可以在python IDE控制台上打印出R会话。
sess = subprocess.call(['C:/Program Files/R/R-3.6.3/bin/Rscript','--vanilla','-e','sessionInfo()'])
我试图将会话传递给GET请求:
from flask import Flask, jsonify
from flask_restplus import Api, Resource, fields, reqparse, inputs
import subprocess
app = Flask(__name__)
api = Api(app)
ns = api.namespace('sess')
sess = subprocess.call(['C:/Program Files/R/R-3.6.3/bin/Rscript','--vanilla','-e','sessionInfo()'])
@ns.route('/')
class AResource(Resource):
def get(self):
parser = reqparse.RequestParse()
parser.add_argument(sess, type= str, required=True)
#return parser.parse_args()
try:
args = parser.parse_args()
return jsonify(args)
except:
return None, 400
if __name__ == '__main__':
app.run(debug=True)
运行代码时,在服务器端点上看不到任何打印的会话信息。当我将sess
对象传递给GET请求时,我认为出了点问题。如何在GET请求中传递自定义python函数或对象作为参数,以便在服务器端点上打印出某些内容?有什么主意吗?
我是flask-restplus的新手,所以也许我不应该将sess
传递给如上所述的GET请求。我虚心请求可能的帮助。谢谢
答案 0 :(得分:1)
请注意,没有长颈瓶,您至少应该得到一个输出。
例如,运行虚拟脚本:
from flask import Flask
from flask_restplus import Api
import subprocess
app = Flask(__name__)
api = Api(app)
sess = subprocess.call(["echo","I am getting this output!"])
将输出
I am getting this output!
如何在每个获取请求中调用subprocess.call
示例代码
from flask import Flask
from flask_restplus import Resource, Api
from flask_restplus import Api
import subprocess
import os
app = Flask(__name__)
api = Api(app)
@api.route('/hello')
class HelloWorld(Resource):
def get(self):
subprocess.call(["echo","I am getting this output!"])
subprocess.call(['Rscript','--vanilla','-e','sessionInfo()'])
return {'hello123': 'world'}
if __name__ == '__main__':
app.run(debug=True)
当我在终端上运行应用程序并在浏览器上请求http://localhost:5000/hello时,我会在终端上看到此输出
I am getting this output!
R version 3.6.3 (2020-02-29)
Platform: x86_64-apple-darwin18.7.0 (64-bit)
Running under: macOS Mojave 10.14.5
Matrix products: default
BLAS/LAPACK: /usr/local/Cellar/openblas/0.3.9/lib/libopenblasp-r0.3.9.dylib
locale:
[1] en_IE.UTF-8/en_IE.UTF-8/en_IE.UTF-8/C/en_IE.UTF-8/en_IE.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.6.3
127.0.0.1 - - [22/Apr/2020 15:01:16] "GET /hello HTTP/1.1" 200 -