gunicorn+gevent+pypy的监督和监督问题

2024-06-01 00:41:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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.confconf文件,并将“command”参数设置为上面成功运行的命令。当我试图通过supervisord启动api时,它失败了,在api的日志中,错误是:

^{pr2}$

所以,我很惊讶手动运行这个命令确实有用,但是当主管试图运行它时,上面的错误被抛出了。在

经过多次尝试和错误之后,我决定安装monit,看看它是否可以监视我的api,而且我确实成功地将“start program”参数指定为前面提到的命令。在

我很惊讶莫妮特竟然犯了同样的错误。那么,这是否意味着我的api(pypy+gunicorn+gevent)的特性阻止了它自己被任何监控软件监视?在

配置supervisord/monit时是否有什么问题?在

非常感谢任何帮助。在


Tags: topathpy命令projectapi应用程序bin
1条回答
网友
1楼 · 发布于 2024-06-01 00:41:24

结果是我的/etc/environment中已经导出了环境var GEVENT_循环,如下所示:

export GEVENT_LOOP=pypycore.loop

因为要在pypy上运行gevent,需要进行一些黑客操作,包括上面的导出。在

但我需要在Monit的“start_program”命令项中手动导出它(最后我用Monit粘贴),因此得到的命令是:

^{pr2}$

相关问题 更多 >