Python Flask服务器能否缓存请求正文?
我有一个小烧瓶API设置,如下所示Python Flask服务器能否缓存请求正文?,python,flask,Python,Flask,我有一个小烧瓶API设置,如下所示 from flask import Flask, request, jsonify, Response import json import subprocess import os app = Flask(__name__) shellScripts = { 'redeploy': ['/bin/bash', 'redeploy.sh'], 'script-exec': ['/bin/bash', 'script-exec.sh'] }
from flask import Flask, request, jsonify, Response
import json
import subprocess
import os
app = Flask(__name__)
shellScripts = {
'redeploy': ['/bin/bash', 'redeploy.sh'],
'script-exec': ['/bin/bash', 'script-exec.sh']
}
def prepareShellCommand(json_data, scriptKey):
script=shellScripts[scriptKey]
print('script is')
print(script)
for key in json_data:
if scriptKey == 'redeploy':
script.append("-{0}".format(key[0]))
script.append(json_data[key])
return script
@app.route('/redeploy', methods=['POST'])
def setup_redeploy():
branches_data_json = request.get_json()
if ('frontendBranch' not in branches_data_json and 'backendBranch' not in branches_data_json):
return jsonify({'error': 'Need to provide at least one branch'}), 400
command = prepareShellCommand(branches_data_json, 'redeploy')
sp = subprocess.Popen(command)
return jsonify({'message': 'Redeployment under process'}), 201
@app.route('/execute', methods=['POST'])
def execute_script():
script_data_json = request.get_json()
if ('scriptPath' not in script_data_json):
return jsonify({'error': 'Need to provide script path'}), 400
command = prepareShellCommand(script_data_json, 'script-exec')
sp = subprocess.Popen(command)
return jsonify({'message': 'Script execution under process'}), 201
发生的情况是,假设我启动一个API端点,/execute,使用一些数据作为{scriptPath:'some file'},然后它成功运行。但是,有时,不管请求主体数据发生了什么变化,API似乎都可以使用旧数据{scriptPath:'some file'},即使我使用类似于{scriptPath:'new file'}的东西启动API也是如此。直到我杀死python进程并重新启动它,它才会改变
这可能是什么原因?我在一个谷歌云实例上作为开发服务器运行它
它发生在两个端点上,我有一种直觉,它与子流程或包含样板的字典有关
有人能帮我吗?这几乎可以肯定,因为您已经在模块级别定义了shell脚本,但可以从处理程序中修改它。对该字典值的更改将持续到服务器进程的生命周期 您应该复制该值并修改它:
def prepareShellCommand(json_data, scriptKey):
script = shellScripts[scriptKey].copy()