与监督员一起遇到其他问题。
Centos 6.5 supervisor python 2.6与OS python 2.7一起安装在/usr/local/bin中
受监督程序设置
[program:inf_svr]
process_name=inf_svr%(process_num)s
directory=/opt/inf_api/
environment=USER=root,PYTHONPATH=/usr/local/bin/
command=python2.7 /opt/inf_api/inf_server.py --port=%(process_num)s
startsecs=2
user=root
autostart=true
autorestart=true
numprocs=4
numprocs_start=8080
stderr_logfile = /var/log/supervisord/tornado-stderr.log
stdout_logfile = /var/log/supervisord/tornado-stdout.log
我可以用以下命令运行inf_server.py:
python2.7 inf_server.py --port=8080
没有问题。我确保文件是可执行的(这是我以前的问题)。
有什么想法吗?
更新:我甚至不能让它启动一个基本的Python脚本而不失败。开始时注解掉旧程序,添加一个新程序,然后放入:
command=python /opt/inf_api/test.py
其中test.py只是在屏幕和文件中写入一些内容。退出状态为0时失败。所以我开始添加python的位置(在使用'which python'发现它之后)
environment=PYTHONPATH=/usr/bin
尝试将路径放在单引号中,尝试将USER=root添加到环境中,尝试添加
directory=opt/inf_api/
尝试添加
user=root
所有同样的事情,退出状态0。似乎没有添加到任何日志文件,除了我看到的调试监督。
伙计,我不知所措。
2条答案
按热度按时间hrysbysz1#
事实证明,这是Supervisord如何从python捕获错误消息的问题。因为它不是。我运行它来启动一个tornado应用程序,它调用第二个python文件,以便它可以生成n个tornado服务器示例。如果第二个python应用程序中有错误,那么它就不会捕捉它们并将它们保存到日志文件中。我尝试了各种方法,但最终不得不自己用try:除了:并保存到我自己的日志文件。可能是好的实践,无论如何,但谈论一个回合的方式去做。
ql3eal8s2#
尝试查看错误日志文件/var/log/supervisord/tornado-stderr.log。