【发布时间】:2019-01-30 19:42:52
【问题描述】:
应用详情:Ubuntu 16.04 + flask + nginx + uwsgi
我正在尝试从烧瓶应用程序执行 bash 命令。
@app.route('/hello', methods=('GET', 'POST'))
def hello():
os.system('mkdir my_directory')
return "Hello"
以上代码运行成功,但没有创建任何目录。它还在我的本地创建没有任何 nginx 级别设置的目录。
我也尝试了以下方法:
- subprocess.call(['mkdir', 'my_directory']) # 引发内部服务器错误
- subprocess.call(['mkdir', 'my_directory'],shell=True) # 没有错误但没有创建目录
- subprocess.Popen(['mkdir', 'my_directory']) # 引发内部服务器错误
- subprocess.Popen(['mkdir', 'my_directory'],shell=True) # 没有错误但没有创建目录
我是否需要任何 nginx 级别的配置更改。
【问题讨论】:
-
你试过
import os os.makedirs(my_directory)吗? -
它将在您的应用程序运行的任何目录中创建 my_directory,尝试给它一个绝对路径而不是目录名称。例如mkdir /home/you/output_dirs/my_directory
-
代码尝试在工作目录中创建目录。尝试通过 os.getcwd() 查看工作目录。可能应用程序没有对该文件夹的 r/w 访问权限。另外,检查 subprocess.call 的返回码。
-
@Pradeepb os.makedirs 正在工作。但是任何 shell 命令都不起作用。
-
@VivekAkupatni subprocess.call 返回 127。我正在当前工作目录中创建我认为所有 r/w 访问的目录。因为我可以在同一执行点使用
os.makedirs创建目录。
标签: python bash nginx flask uwsgi