我可以将Flask服务器添加到现有的Node Web应用程序吗?

时间:2018-09-03 23:03:24

标签: javascript python jquery http flask

我有一个Web应用程序和一些Python脚本,它们希望在某些输入的文本上运行。我环顾四周,看来Flask是对此的最佳解决方案,但这不意味着我会有两个Web服务器吗?

那么,当用户提交一些文本,运行Python脚本,然后停止Flask服务器时,我会启动Flask服务器吗?我该怎么做?该应用程序是JS / jQuery。

另一个解决方案似乎是将Python重写为JavaScript,我自然很犹豫。

1 个答案:

答案 0 :(得分:0)

您可以使用flask-restful扩展名创建仅作为Node.js Web应用程序API的Flask应用程序。链接到用户指南here

您可能会遇到跨域资源共享(CORS)的问题,因此您可能还需要点安装flask-cors扩展名。链接here

以下是一个入门的基本设置:

from flask import Flask
from flask_restful import Api, Resource, reqparse
from flask_cors import CORS
from flask_restful import Resource

# Import your python module containing the script
import your_python_scripts_module as scripts

app = Flask(__name__)
api = Api(app)
CORS(app, origins=['address of your node app'])
parser = reqparse.RequestParser()
parser.add_argument('text')

class YourClass(Resource):
    def post(self):
        args = parser.parse_args()
        # Invoke your text processing script here
        processed_text = scripts.text_processor(args['text'])
        response = {'data': processed_text}
        return response, 200

# This is where the routing is specified
api.add_resource(YourClass, '/your_api_endpoint')

if "__name__" == "__main__":
    app.run(host='address_of_flask_app')

关于您关于启动此服务器并根据需要从Node应用程序关闭它的问题,我无法帮助您(到目前为止)。我对此没有任何经验。

以上设置适用于简单的烧瓶模块。您可以使用指南here将应用设置为软件包。

祝你好运!