首页 > 解决方案 > 每次 API 收到请求时执行 python 脚本

问题描述

这是我的简单休息 api

我从脚本中获取jira变量get_jira

这是另一个 python 脚本,它向 jira rest api 发送 POST 请求以获取新的 jira ID

它工作正常,但只有一次。当我启动我的应用程序并向其发送 GET 请求时,它会为我提供新的 jira ID,比如说ABC-01. 问题是当我发送另一个 GET 请求以获取下一个 jira ID 时,它又给了ABC-01

看起来get_jira只执行一次,无论我发送多少 GET 请求。唯一的方法是重新启动应用程序

jira每次我向我的 api 发送 GET 请求时,有什么方法可以获取新的 jira ID ( )?

from flask_restful import Resource, Api, request
import fileinput

app = Flask(__name__)
api = Api(app)

class Get(Resource):
        def get(self):

                ### ACCEPTED PARAMETERS
                source = request.get_json(force=True)['source']
                desc = request.get_json(force=True)['desc']

                ###
                .
                .
                ###

           ---> from get_jira import jira

                return jsonify({"desc":desc},{"source": source},{"jira": jira})

api.add_resource(Get, '/api/v1.0')

if __name__ == '__main__':
        app.run(port=5000,debug=True,use_reloader=True)

标签: pythonflaskflask-restful

解决方案


导入应该在文件顶部完成,原因有几个,我不会在这里讨论,但我认为你最好对 python 中的导入如何工作进行一些研究。

根据我对您的代码的理解,它可以重新格式化如下。请注意,这假设您有一个名为 get_jira.py 的文件,其中包含一个名为 generate_jira 的函数,该函数在每次运行时都会返回一个新的 jira 名称。

from flask_restful import Resource, Api, request
from get_jira import generate_jira
import fileinput

app = Flask(__name__)
api = Api(app)

class Get(Resource):
    def get(self):

            ### ACCEPTED PARAMETERS
            source = request.get_json(force=True)['source']
            desc = request.get_json(force=True)['desc']
            jira = generate_jira()

            return jsonify({"desc":desc},{"source": source},{"jira": jira})

api.add_resource(Get, '/api/v1.0')

if __name__ == '__main__':
    app.run(port=5000,debug=True,use_reloader=True)

推荐阅读