我正在尝试使用supervisor服务运行一个龙卷风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/
这运行得很完美。
代码中有一些部分依赖于写入虚拟环境的激活文件中的一些环境变量。
现在,问题是主管无法读取这些环境变量并抛出错误。当我手动运行它时,它工作得很好。
我错过了什么?
当您运行env/bin/python
时,您使用的是virtualenv
而不是激活。这已经足够常见了,但如果您真的依赖于激活的virtualenv
(例如,因为您想在该环境中启动子流程或使用其他环境变量),然后你需要在你的supervisor配置中激活它(如果你这样做,你可能想删除与activate
重复的environment
行):
command=bash -c 'source /home/ubuntu/env/bin/activate && python /home/ubuntu/<repo>/__main__.py'