我需要一种可靠的方法来检查通过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
我在网上找到的只有一些hacks using ps or stuff like that。但我不喜欢这样的方法,因为我觉得它不可靠。
所以我在考虑是否有办法访问Twisted的内部,并获取所有当前正在运行的Twisted应用程序?这样我就可以在当前运行的应用程序中查询我的Twisted应用程序的名称(我在TAC文件中命名)以启动。
我也在考虑不使用扭曲的可执行文件,而是实现基于Python的启动脚本,其中包含扭曲的内容,如the answer to this question provides,但我不知道这是否有助于我获取状态要运行的服务器。
所以我的问题就是:是否有一种可靠的非丑陋的方式来判断twd服务器启动时是否已成功启动twistd,当禁用扭曲日志时?
答案 0 :(得分:5)
您明确指定了PID文件。 twistd会将其PID写入该文件。您可以检查系统以查看是否存在具有该PID的进程。
您还可以使用自定义日志观察器重新启用日志记录,该日志观察器仅记录您的启动事件并丢弃所有其他日志消息。然后,您可以查看启动事件的日志。
另一种可能性是在您的应用程序中添加另一个服务器,该服务器公开您提到的内部。然后尝试连接到该服务器并四处查看您想要查看的内容(只是服务器正在运行的事实似乎是一个很好的迹象表明该过程正常启动)。如果你把它作为沙井服务器,那么你就能够评估任意Python代码,这可以让你检查你想要的过程中的任何状态。
您也可以让您的应用程序代码写出一个明确指示成功启动的额外状态文件。确保在启动应用程序之前将其删除,并且您将获得成功与失败的良好指标。