检查是否已成功启动使用twistd启动的Twisted Server

Ing*_*her 3 python twisted twistd

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

launch-script是一个像这样的Bash脚本:

#!/usr/bin/bash
twistd \
  --pidfile "myservice.pid" \
  --logfile "/dev/null" \
  --python \
  myservice.tac
Run Code Online (Sandbox Code Playgroud)

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

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

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

所以我的问题就是:是否有一种可靠的非丑陋的方式来判断Twisted Server启动时是否已成功启动了twistd,当禁用了twistd-logging时?

Jea*_*one 5

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

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

另一种可能性是在您的应用程序中添加另一个服务器,该服务器公开您提到的内部.然后尝试连接到该服务器并四处查看您想要查看的内容(只是服务器正在运行的事实似乎是一个很好的迹象表明该过程正常启动).如果您将其设为沙井服务器,那么您就可以评估任意Python代码,从而可以检查所需流程中的任何状态.

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