ubuntu18.04上的Nginx烧瓶
我正在构建一个web应用程序,需要在其中运行用户提供的一些Python代码,并计划使用Docker启动临时容器来运行代码、返回一些输出并关闭容器。你知道吗
当flask调用时,我的代码不会将输出写入文件。你知道吗
我已经成功地从SSH运行了这个命令,并编写了一个测试python脚本(使用与Flask相同的虚拟环境运行),该脚本可以毫无问题地编写文件。只有通过http请求调用时,它才会失败。你知道吗
@app.route("/", methods=['POST', 'GET'])
def runScript():
ScriptSettings = Settings()
if(request.method == 'POST'):
key = request.form['key']
if key == ScriptSettings.key:
user = request.form['user']
script = request.form['script']
rand_str = str(random.randint(100000000, 1000000000))
file_name = f"user-scripts/{user}-{rand_str}"
script_file_name = file_name + ".py"
response_file_name = file_name + ".txt"
working_directory = "/home/USER/request-server"
f=open(script_file_name, "w+")
f.write(script)
f.close()
os.system(f'docker run -it --rm --name {user}-{rand_str} -v "$PWD":{working_directory} -w {working_directory} python:3.7-alpine python {script_file_name} > {response_file_name}')
f=open(response_file_name, "r")
contents = f.read()
f.close()
if remove_user_files:
os.remove(script_file_name)
os.remove(response_file_name)
return contents
else:
return ""
else:
return ""
txt文件(response\u file\u name)应该包含python代码/docker的输出。当从测试脚本或直接命令行运行时,它可以很好地工作,但是在这个脚本中使用flask(http请求)调用时,它只会写入一个空文件
目前没有回答
相关问题 更多 >
编程相关推荐