我在python中使用Falcon框架构建了一个小型restapi,它在gunicorn+gevent和pypy2.3的虚拟环境中运行(我成功地从gevent@pypy hacks公司以及pypy/pypycore上的gevent)。我想为我的应用程序添加一个“supervisor”,所以我首先安装了supervisord,然后按照步骤启动并运行它。在
我在服务器上做的第一件事是测试启动api的命令;它运行成功,我可以毫无问题地使用api。命令是:
/bin/bash -c 'cd /path/to/project/api && /path/to/project/env/bin/gunicorn -c settings.py my-api:my_api'
注:在设置.py我设置了参数daemon=False
,因为我看到主管要求命令在“前台”运行,而不是守护程序。在
一旦成功,我就开始创建应用程序的/etc/supervisor/conf.d/my_api.conf
conf文件,并将“command”参数设置为上面成功运行的命令。当我试图通过supervisord启动api时,它失败了,在api的日志中,错误是:
所以,我很惊讶手动运行这个命令确实有用,但是当主管试图运行它时,上面的错误被抛出了。在
经过多次尝试和错误之后,我决定安装monit,看看它是否可以监视我的api,而且我确实成功地将“start program”参数指定为前面提到的命令。在
我很惊讶莫妮特竟然犯了同样的错误。那么,这是否意味着我的api(pypy+gunicorn+gevent)的特性阻止了它自己被任何监控软件监视?在
配置supervisord/monit时是否有什么问题?在
非常感谢任何帮助。在
结果是我的
/etc/environment
中已经导出了环境var GEVENT_循环,如下所示:因为要在pypy上运行gevent,需要进行一些黑客操作,包括上面的导出。在
但我需要在Monit的“start_program”命令项中手动导出它(最后我用Monit粘贴),因此得到的命令是:
^{pr2}$相关问题 更多 >
编程相关推荐