我需要一种可靠的方法来检查通过twistd(和tac文件)启动的基于twisted的服务器是否成功启动。它可能会失败,因为一些网络选项设置错误。由于我无法访问twistd日志(因为它被记录到/dev/null,因为我不需要twistd产生的日志混乱),我需要找出服务器是否在一个包含twistd调用的启动脚本中成功启动。
启动脚本是一个Bash脚本,如下所示:#!/usr/bin/bash
twistd
--pidfile "myservice.pid"
--logfile "/dev/null"
--python
myservice.tac
我在网上发现的都是一些黑客使用ps之类的东西。但我不喜欢这样的方法,因为我认为它不可靠。
所以我在想是否有一种方法可以访问Twisted的内部,并获得所有当前正在运行的Twisted应用程序?这样,我就可以查询当前运行的应用程序,以启动我的Twisted应用程序的名称(正如我在tac文件中命名的那样)。
我也在考虑不使用twistd可执行文件,而是实现一个基于python的启动脚本,其中包括twistd-content,就像这个问题的答案提供的,但我不知道这是否有助于我获得服务器的运行状态。
所以我的问题是:当Twisted -logging被禁用时,是否有一种可靠而又不难看的方法来判断使用twistd启动的Twisted Server是否成功启动?
您显式指定了一个PID文件。twistd将把它的PID写入该文件。您可以检查系统是否有使用该PID的进程。
你也可以用一个自定义的日志观察者来重新启用日志记录,它只记录你的启动事件,而丢弃所有其他的日志消息。然后您可以查看启动事件的日志。
另一种可能性是在应用程序中添加另一个服务器,以公开您提到的内部结构。然后尝试连接到该服务器并查看您想要查看的内容(但是,服务器正在运行的事实似乎很好地表明进程已正确启动)。如果你让它成为一个井口服务器,那么你就有能力评估任意Python代码,这让你可以检查进程中的任何状态。
你也可以让你的应用程序代码写一个额外的状态文件,显式地表示成功启动。确保在启动应用程序之前删除它,这样你就有了一个成功与失败的良好指标。