Proc
Process management module.
ManagedProcess
Bases: AbstractContextManager
Class to manage the specified process with redirected output.
stdout and stderr will both be redirected to
Source code in dvc_task/proc/process.py
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
|
info: ProcessInfo
property
Return process information.
pid: int
property
Return process PID.
Raises:
Type | Description |
---|---|
ValueError
|
Process is not running. |
__init__(args, env=None, wdir=None, name=None)
Construct a MangedProcess.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
args
|
Union[str, List[str]]
|
Command to be run. |
required |
env
|
Optional[Dict[str, str]]
|
Optional environment variables. |
None
|
wdir
|
Optional[str]
|
If specified, redirected output files will be placed in
|
None
|
name
|
Optional[str]
|
Name to use for this process, if not specified a UUID will be generated instead. |
None
|
Source code in dvc_task/proc/process.py
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
|
info_path()
Return process information file path.
Source code in dvc_task/proc/process.py
120 121 122 123 |
|
pidfile_path()
Return process pidfile path.
Source code in dvc_task/proc/process.py
125 126 127 128 |
|
run()
Run this process.
Source code in dvc_task/proc/process.py
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
|
spawn(*args, **kwargs)
classmethod
Spawn a ManagedProcess command in the background.
Returns: The spawned process PID.
Source code in dvc_task/proc/process.py
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
|
stdout_path()
Return redirected stdout path.
Source code in dvc_task/proc/process.py
115 116 117 118 |
|
wait(timeout=None)
Block until a process started with run
has completed.
Source code in dvc_task/proc/process.py
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
|
ProcessInfo
dataclass
Process information.
Source code in dvc_task/proc/process.py
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
asdict()
Return this info as a dictionary.
Source code in dvc_task/proc/process.py
45 46 47 |
|
dump(filename)
Dump the process information into a file.
Source code in dvc_task/proc/process.py
49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
from_dict(data)
classmethod
Construct ProcessInfo from the specified dictionary.
Source code in dvc_task/proc/process.py
34 35 36 37 |
|
load(filename)
classmethod
Construct the process information from a file.
Source code in dvc_task/proc/process.py
39 40 41 42 43 |
|
ProcessManager
Manager for controlling background ManagedProcess(es) via celery.
Spawned process entries are kept in the manager directory until they are explicitly removed (with remove() or cleanup()) so that return value and log information can be accessed after a process has completed.
Source code in dvc_task/proc/manager.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
|
__init__(wdir=None)
Construct a ProcessManager
Parameters:
Name | Type | Description | Default |
---|---|---|---|
wdir
|
Optional[str]
|
Directory used for storing process information. Defaults to the current working directory. |
None
|
Source code in dvc_task/proc/manager.py
31 32 33 34 35 36 37 38 39 40 41 |
|
cleanup(force=False)
Remove stale (terminated) processes from this manager.
Source code in dvc_task/proc/manager.py
197 198 199 200 201 202 203 |
|
follow(name, encoding=None, sleep_interval=1)
Iterate over lines in redirected output for a process.
This will block calling thread when waiting for output (until the followed process has exited).
Parameters:
Name | Type | Description | Default |
---|---|---|---|
name
|
str
|
Process name. |
required |
encoding
|
Optional[str]
|
Text encoding for redirected output. Defaults to
|
None
|
sleep_interval
|
int
|
Sleep interval for follow iterations (when waiting for output). |
1
|
Note
Yielded strings may not always end in line terminators (all available output will yielded if EOF is reached).
Source code in dvc_task/proc/manager.py
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
|
get(key, default=None)
Return the specified process.
Source code in dvc_task/proc/manager.py
66 67 68 69 70 71 |
|
interrupt(name, group=True)
Send interrupt signal to specified named process
Source code in dvc_task/proc/manager.py
153 154 155 156 157 158 159 160 161 162 |
|
kill(name, group=False)
Kill the specified named process.
Source code in dvc_task/proc/manager.py
168 169 170 171 172 173 |
|
processes()
Iterate over managed processes.
Source code in dvc_task/proc/manager.py
73 74 75 76 77 78 79 |
|
remove(name, force=False)
Remove the specified named process from this manager.
If the specified process is still running, it will be forcefully killed
if force
is True`, otherwise an exception will be raised.
Source code in dvc_task/proc/manager.py
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
|
run_signature(args, name=None, task=None, env=None, immutable=False)
Return signature for a task which runs a command in the background.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
args
|
Union[str, List[str]]
|
Command to run. |
required |
name
|
Optional[str]
|
Optional name to use for the spawned process. |
None
|
task
|
Optional[str]
|
Optional name of Celery task to use for spawning the process. Defaults to 'dvc_task.proc.tasks.run'. |
None
|
env
|
Optional[Dict[str, str]]
|
Optional environment to be passed into the process. |
None
|
immutable
|
bool
|
True if the returned Signature should be immutable. |
False
|
Returns:
Type | Description |
---|---|
Signature
|
Celery signature for the run task. |
Source code in dvc_task/proc/manager.py
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
|
send_signal(name, sig, group=False)
Send signal
to the specified named process.
Source code in dvc_task/proc/manager.py
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
|
terminate(name, group=False)
Terminate the specified named process.
Source code in dvc_task/proc/manager.py
164 165 166 |
|