aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py2/twisted/runner/procmontap.py
diff options
context:
space:
mode:
authorshmel1k <shmel1k@ydb.tech>2023-11-26 18:16:14 +0300
committershmel1k <shmel1k@ydb.tech>2023-11-26 18:43:30 +0300
commitb8cf9e88f4c5c64d9406af533d8948deb050d695 (patch)
tree218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/runner/procmontap.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/runner/procmontap.py')
-rw-r--r--contrib/python/Twisted/py2/twisted/runner/procmontap.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/runner/procmontap.py b/contrib/python/Twisted/py2/twisted/runner/procmontap.py
new file mode 100644
index 0000000000..c0e72a45e8
--- /dev/null
+++ b/contrib/python/Twisted/py2/twisted/runner/procmontap.py
@@ -0,0 +1,73 @@
+# -*- test-case-name: twisted.runner.test.test_procmontap -*-
+# Copyright (c) Twisted Matrix Laboratories.
+# See LICENSE for details.
+
+"""
+Support for creating a service which runs a process monitor.
+"""
+
+from twisted.python import usage
+from twisted.runner.procmon import ProcessMonitor
+
+
+class Options(usage.Options):
+ """
+ Define the options accepted by the I{twistd procmon} plugin.
+ """
+
+ synopsis = "[procmon options] commandline"
+
+ optParameters = [["threshold", "t", 1, "How long a process has to live "
+ "before the death is considered instant, in seconds.",
+ float],
+ ["killtime", "k", 5, "How long a process being killed "
+ "has to get its affairs in order before it gets killed "
+ "with an unmaskable signal.",
+ float],
+ ["minrestartdelay", "m", 1, "The minimum time (in "
+ "seconds) to wait before attempting to restart a "
+ "process", float],
+ ["maxrestartdelay", "M", 3600, "The maximum time (in "
+ "seconds) to wait before attempting to restart a "
+ "process", float]]
+
+ optFlags = []
+
+
+ longdesc = """\
+procmon runs processes, monitors their progress, and restarts them when they
+die.
+
+procmon will not attempt to restart a process that appears to die instantly;
+with each "instant" death (less than 1 second, by default), it will delay
+approximately twice as long before restarting it. A successful run will reset
+the counter.
+
+Eg twistd procmon sleep 10"""
+
+ def parseArgs(self, *args):
+ """
+ Grab the command line that is going to be started and monitored
+ """
+ self['args'] = args
+
+
+ def postOptions(self):
+ """
+ Check for dependencies.
+ """
+ if len(self["args"]) < 1:
+ raise usage.UsageError("Please specify a process commandline")
+
+
+
+def makeService(config):
+ s = ProcessMonitor()
+
+ s.threshold = config["threshold"]
+ s.killTime = config["killtime"]
+ s.minRestartDelay = config["minrestartdelay"]
+ s.maxRestartDelay = config["maxrestartdelay"]
+
+ s.addProcess(" ".join(config["args"]), config["args"])
+ return s