Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查使用twistd启动的Twisted服务器是否已成功启动_Python_Twisted_Twistd - Fatal编程技术网

Python 检查使用twistd启动的Twisted服务器是否已成功启动

Python 检查使用twistd启动的Twisted服务器是否已成功启动,python,twisted,twistd,Python,Twisted,Twistd,我需要一种可靠的方法来检查通过twistd(和TAC文件)启动的基于Twisted的服务器是否成功启动。它可能会失败,因为某些网络选项设置错误。因为我无法访问twistd日志(因为它被记录到/dev/null,因为我不需要twistd生成),所以我需要确定服务器是否在包装twistd调用的启动脚本中成功启动 启动脚本是一个Bash脚本,如下所示: #!/usr/bin/bash twistd \ --pidfile "myservice.pid" \ --logfile "/dev/nu

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

启动脚本是一个Bash脚本,如下所示:

#!/usr/bin/bash
twistd \
  --pidfile "myservice.pid" \
  --logfile "/dev/null" \
  --python \
  myservice.tac
我在网上找到的只是一些。但我不喜欢这样的方法,因为我认为它不可靠

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

我还考虑不使用twistd可执行文件,而是实现一个基于Python的启动脚本,其中包括twistd内容,比如,但我不知道这是否有助于我获得服务器运行状态


所以我的问题是:当禁用twistd日志记录时,是否有可靠且不丑陋的方法来判断使用twistd启动的Twisted服务器是否成功启动?

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

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

另一种可能是向应用程序中添加另一个服务器,该服务器公开了您提到的内部结构。然后尝试连接到该服务器并四处查看您希望看到的内容(不过,服务器正在运行这一事实似乎很好地表明进程已正确启动)。如果将其设置为检修孔服务器,则可以计算任意Python代码,从而可以检查流程中的任何状态

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