【问题标题】:uWSGI python subprocess chrome/firefox faileduWSGI python子进程chrome/firefox失败
【发布时间】:2018-02-05 00:21:33
【问题描述】:

我在 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

【问题讨论】:

    标签: python ubuntu nginx flask uwsgi


    【解决方案1】:

    你给你的PATH 一个过于严格的值:

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

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

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

    【讨论】:

    • 感谢您快速明确的回复,这解决了问题。
    【解决方案2】:

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

    【讨论】:

    • 感谢 Juggernaut,该版本只是所需操作的示例。还有更多命令需要 Popen,但我只提供了一个示例场景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2017-04-21
    • 2016-11-10
    • 2017-07-11
    相关资源
    最近更新 更多