twisted.runner.procmon.ProcessMonitor(service.Service)
class documentationtwisted.runner.procmon
(View In Hierarchy)
ProcessMonitor runs processes, monitors their progress, and restarts them when they die.
The ProcessMonitor 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.
The primary interface is addProcess
and removeProcess
.
When the service is running (that is, when the application it is attached
to is running), adding a process automatically starts it.
Each process has a name. This name string must uniquely identify the
process. In particular, attempting to add two processes with the same name
will result in a KeyError
.
Instance Variable | threshold | How long a process has to live before the death is considered instant, in
seconds. The default value is 1 second. (type: float ) |
Instance Variable | killTime | How long a process being killed has to get its affairs in order before it
gets killed with an unmaskable signal. The default value is 5 seconds. (type: float ) |
Instance Variable | minRestartDelay | The minimum time (in seconds) to wait before attempting to restart a
process. Default 1s. (type: float ) |
Instance Variable | maxRestartDelay | The maximum time (in seconds) to wait before attempting to restart a
process. Default 3600s (1h). (type: float ) |
Instance Variable | log | The logger used to propagate log messages from spawned processes. (type: Logger ) |
Method | __init__ | Undocumented |
Method | processes | Processes as dict of tuples |
Method | __getstate__ | Undocumented |
Method | addProcess | Add a new monitored process and start it immediately if the ProcessMonitor
service is running. |
Method | removeProcess | Stop the named process and remove it from the list of monitored processes. |
Method | startService | Start all monitored processes. |
Method | stopService | Stop all monitored processes and cancel all scheduled process restarts. |
Method | connectionLost | No summary |
Method | startProcess | |
Method | stopProcess | |
Method | restartAll | No summary |
Method | __repr__ | Undocumented |
Instance Variable | _reactor | A provider of IReactorProcess
and IReactorTime
which will be used to spawn processes and register delayed calls. (type: IReactorProcess
provider) |
Method | _forceStopProcess |
Inherited from Service:
Method | setName | Set the name of the service. |
Method | setServiceParent | Set the parent of the service. This method is responsible for setting
the parent attribute on this service (the child service). |
Method | disownServiceParent | Use this API to remove an IService
from an IServiceCollection . |
Method | privilegedStartService | Do preparation work for starting the service. |
float
)
float
)
float
)
float
)
IReactorProcess
and IReactorTime
which will be used to spawn processes and register delayed calls. (type: IReactorProcess
provider)
Processes as dict of tuples
Returns | Dict of process name to monitored processes as tuples |
Add a new monitored process and start it immediately if the ProcessMonitor
service is running.
Note that args are passed to the system call, not to the shell. If
running the shell is desired, the common idiom is to use
ProcessMonitor.addProcess("name", ['/bin/sh', '-c',
shell_script])
Parameters | name | A name for this process. This value must be unique across all processes
added to this monitor. (type: str ) |
args | The argv sequence for the process to launch. | |
uid | The user ID to use to run the process. If None ,
the current UID is used. (type: int ) | |
gid | The group ID to use to run the process. If None ,
the current GID is used. | |
env | The environment to give to the launched process. See IReactorProcess.spawnProcess 's
env parameter. (type: dict ) | |
cwd | The initial working directory of the launched process. The default of
None means inheriting the laucnhing process's working
directory. | |
Raises | KeyError if a process with the given name already exists |
Stop the named process and remove it from the list of monitored processes.
Parameters | name | A string that uniquely identifies the process. (type: str ) |
Called when a monitored processes exits. If service.IService.running
is True
(ie the service is started), the process will be restarted. If the process
had been running for more than ProcessMonitor.threshold
seconds it will be restarted immediately. If the process had been running
for less than ProcessMonitor.threshold
seconds, the restart will be delayed and each time the process dies before
the configured threshold, the restart delay will be doubled - up to a
maximum delay of maxRestartDelay sec.
Parameters | name | A string that uniquely identifies the process which exited. (type: str ) |