Launch and terminate Timeflux instances on both POSIX and Windows systems.
Sometimes, it’s okay to kill. But only if you do it gracefully, and give your victim a chance to say goodbye to his or her children and let them commit suicide (again, with grace) upon hearing such news.
On POSIX systems, it’s easy: just launch your process normally and terminate it by sending a SIGINT signal.
On Windows, well, that’s another story. SIGINT can’t be captured, and the only way is to send a CTRL+C event. Any other signal (except CTRL+BREAK) will terminate without notice. Simple enough, you might say. Not quite. It just happens that CTRL events can only be captured by processes attached to the current console. Which is pretty useless in most cases. But do not abandon all hope! Here is a (hacky) solution: have a launcher script that will start a simple TCP server and run your program. When a client connect to the server, it will send a CTRL+C event to its subprocess.
Use this helper as a script or invoke with: python -m timeflux.helpers.handler [cmd] [args]
.
Example
Launching a Timeflux instance: python -m timeflux.helpers.handler launch timeflux -d foobar.yaml
Example
Terminating a Timeflux instance gracefully: python -m timeflux.helpers.handler terminate
Example
Running Timeflux from a batch script:
@echo off
set ROOT=C:\Users\%USERNAME%\Miniconda3
call %ROOT%\Scripts\activate.bat %ROOT%
call conda activate timeflux
start python -m timeflux.helpers.handler launch timeflux -d foobar.yaml
pause
call python -m timeflux.helpers.handler terminate
References
handler
- timeflux.helpers.handler.launch_windows(args, port=10000)[source]
Launch a subprocess and await connection to a TCP server.
- timeflux.helpers.handler.terminate_posix(match='timeflux')[source]
Find oldest Timeflux process and terminate it.
- timeflux.helpers.handler.terminate_windows(port=10000)[source]
Terminate the Timeflux process by connecting to the TCP server.
- timeflux.helpers.handler.args