supervisorctl 无法重新加载虚拟环境激活文件

supervisorctl unable to reload virtual environment activate file

我正在尝试 运行 龙卷风 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/

这 运行 非常完美。

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

现在的问题是 supervisor 无法读取那些环境变量并抛出错误。 当我手动 运行 它时,它工作正常。

我错过了什么?

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

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