uWSGI python子进程chrome / firefox失败

时间:2017-08-27 16:24:11

标签: python ubuntu nginx flask uwsgi

我在uWSGI下有一个使用nginx服务的python烧瓶应用程序。 python代码调用subprocess.Popen()来运行浏览器(即Firefox,Chrome),但uWSGI日志显示错误。 该错误与linux(ubuntu)标准命令有关,即readlinkwhichcat等。

我怀疑这与用户访问有关,但不确定。 uWSGI服务使用我的用户和www-data组运行。

Python代码

import subprocess

@app.route('/api/check/version', methods=['POST'])
def check_version():
    pid = subprocess.Popen(['/usr/bin/firefox', '--version'], stdout=subprocess.PIPE)
    #pid = subprocess.Popen(['/usr/bin/google-chrome', '--version'], stdout=subprocess.PIPE)
    data = pid.communicate()
    return  data

if __name__ == "__main__":
    check_version()

uWSGI日志

**in case of doing Popen for /usr/bin/firefox
/usr/bin/firefox: 1: /usr/bin/firefox: which: not found

**in case of doing Popen for /usr/bin/google-chrome
/usr/bin/google-chrome-stable: line 8: readlink: command not found
/usr/bin/google-chrome-stable: line 10: dirname: command not found
/usr/bin/google-chrome-stable: line 46: exec: cat: not found
/usr/bin/google-chrome-stable: line 45: exec: cat: not found

uWSGI服务配置

[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/gbadmin/myproject
Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin"
ExecStart=/home/gbadmin/myproject/myprojectenv/bin/uwsgi --ini myproject.ini

[Install]
WantedBy=multi-user.target

2 个答案:

答案 0 :(得分:1)

我没有回答你的问题,但我想我正在解决你遇到的问题。作为替代方案,您可以dpkg -s firefox | grep '^Version:'而不是您正在使用的方法。

答案 1 :(得分:0)

您为PATH提供了过于严格的限制值:

Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin"

相关缺失的命令通常出现在/bin/usr/bin中,将这些命令添加到路径变量可能会解决您的问题

Environment="PATH=/home/gbadmin/myproject/myprojectenv/bin:/usr/bin:/bin"