【问题标题】:Check if Twisted Server launched with twistd was started successfully检查使用 twistd 启动的 Twisted Server 是否成功启动
【发布时间】:2011-09-27 11:25:16
【问题描述】:

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

启动脚本是这样的 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 文件中命名的那样)以启动。

我也在考虑不使用 twistd 可执行文件,而是实现一个基于 Python 的启动脚本,其中包含 twistd 内容,例如 the answer to this question provides,但我不知道这是否有助于我获得服务器运行。

所以我的问题是:当twistd-logging 被禁用时,是否有一种可靠且不难看的方法来判断一个以twistd 启动的Twisted Server 是否成功启动?

【问题讨论】:

    标签: python twisted twistd


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多