【发布时间】:2019-06-14 06:25:46
【问题描述】:
我正在调用 ajax 来执行 python 脚本。我正在使用烧瓶框架来做到这一点。它转到 URL,执行脚本并返回响应。但是,python 脚本可能需要大约 10 秒来执行并返回响应。到那时,如果用户关闭或重新加载选项卡,ajax 调用和脚本执行就会中断。当然,我不想那样。所以,我正在寻找它的替代方案或任何建议,以便在服务器运行之前,python 脚本执行应该完成,即使选项卡已关闭或重新加载。
烧瓶文件:
@app.route('/<contest_id>/<task_id>/submit')
def submit(contest_id, task_id):
response = os.popen("python3 static/submit.py "+contest_id+" "+task_id).read()
return response
Ajax 调用:
$.ajax({
type: "GET",
url: "/"+contest_id+"/"+task_id+"/submit",
success: function(response) {
// do something
}
});
【问题讨论】:
-
请注意,您的代码很容易受到命令注入攻击;如果有人打电话给
http:/example.com/;rm%20-rf%20;/,你会遇到很多麻烦。永远不要信任地将用户输入(包括 URL 参数)放入 shell 命令中(除非它将在您控制的沙箱中运行并且没有其他人可以访问,但我什至不会访问)!