【问题标题】:supervisorctl unable to reload virtual environment activate filesupervisorctl 无法重新加载虚拟环境激活文件
【发布时间】:2017-02-03 13:12:21
【问题描述】:

我正在尝试使用主管服务运行 tornado api。

这是我为使用 supervisor 运行我的应用程序而编写的配置:

[program:tornado_main]
command=/home/ubuntu/env/bin/python /home/ubuntu/<repo>/__main__.py
directory=/home/ubuntu/<repo>
user=ubuntu
stdout_logfile = /var/log/supervisor/tornado_main.log
stderr_logfile = /var/log/supervisor/tornado_main_err.log
environment=PATH=/home/ubuntu/env/bin,PYTHONPATH=/home/ubuntu/<repo>,VIRTUAL_ENV=/home/ubuntu/env/

这完美运行。

代码中有一些部分依赖于一些环境变量,这些环境变量写在虚拟环境的激活文件中。

现在,问题是主管无法读取这些环境变量并引发错误。 当我手动运行它时,它工作正常。

我错过了什么?

【问题讨论】:

    标签: tornado supervisord


    【解决方案1】:

    当您运行env/bin/python 时,您正在使用virtualenv 而没有激活它。这通常足够了,但如果你真的依赖于被激活的virtualenv(例如,因为你想在那个环境中启动子进程或使用其他环境变量),那么你需要在你的主管配置中激活它(如果你这样做,您可能需要删除与 activate 重复的 environment 行):

    command=bash -c 'source /home/ubuntu/env/bin/activate && python /home/ubuntu/<repo>/__main__.py'
    

    【讨论】:

    • 谢谢..我会试试的。虽然我想出了一个在“环境”行中指定所有环境变量的肮脏技巧。
    猜你喜欢
    • 2021-12-18
    • 2021-09-14
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多