3

我需要一种可靠的方法来检查通过 twistd(和 TAC 文件)启动的基于 Twisted 的服务器是否成功启动。它可能会失败,因为某些网络选项设置错误。由于我无法访问twistd日志(因为它已记录到/dev/null,因为我不需要twistd产生的日志混乱),我需要确定服务器是否在包装的启动脚本中成功启动扭曲的呼叫。

启动脚本是这样的 Bash 脚本:

#!/usr/bin/bash
twistd \
  --pidfile "myservice.pid" \
  --logfile "/dev/null" \
  --python \
  myservice.tac

我在网上找到的只是一些使用 ps 或类似东西的黑客。但我不喜欢这样的方法,因为我认为它不可靠。

所以我在考虑是否有一种方法可以访问 Twisted 的内部,并获取所有当前正在运行的 Twisted 应用程序?这样我就可以查询当前正在运行的应用程序以获取我的 Twisted 应用程序的名称(正如我在 TAC 文件中命名的那样)以启动。

我也在考虑不使用twistd可执行文件,而是实现一个包含twistd内容的基于Python的启动脚本,就像这个问题的答案提供的那样,但我不知道这是否有助于我获得状态服务器运行。

所以我的问题只是:当twistd-logging被禁用时,是否有一种可靠的不丑陋的方法来判断一个以twistd启动的Twisted服务器是否成功启动?

4

1 回答 1

5

您明确指定了一个 PID 文件。twistd 会将其 PID 写入该文件。您可以检查系统以查看是否有具有该 PID 的进程。

您还可以使用自定义日志观察器重新启用日志记录,该日志观察器仅记录您的启动事件并丢弃所有其他日志消息。然后您可以查看启动事件的日志。

另一种可能性是向您的应用程序添加另一台服务器,该服务器公开您提到的内部结构。然后尝试连接到该服务器并环顾四周以查看您想看到的内容(不过,服务器正在运行这一事实似乎很好地表明了该进程已正确启动)。如果你把它变成一个检修孔服务器,那么你就可以评估任意 Python 代码,这让你可以检查你想要的进程中的任何状态。

您也可以让您的应用程序代码写出一个明确指示成功启动的额外状态文件。确保在启动应用程序之前将其删除,您将获得成功与失败的良好指标。

于 2011-09-27T11:59:49.373 回答