mirror of
				https://github.com/dgtlmoon/changedetection.io.git
				synced 2025-11-04 00:27:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python3
 | 
						|
 | 
						|
# Entry-point for running from the CLI when not installed via Pip, Pip will handle the console_scripts entry_points's from setup.py
 | 
						|
# It's recommended to use `pip3 install changedetection.io` and start with `changedetection.py` instead, it will be linkd to your global path.
 | 
						|
# or Docker.
 | 
						|
# Read more https://github.com/dgtlmoon/changedetection.io/wiki
 | 
						|
 | 
						|
from changedetectionio import changedetection
 | 
						|
import multiprocessing
 | 
						|
import signal
 | 
						|
import os
 | 
						|
 | 
						|
def sigchld_handler(_signo, _stack_frame):
 | 
						|
    import sys
 | 
						|
    print('Shutdown: Got SIGCHLD')
 | 
						|
    # https://stackoverflow.com/questions/40453496/python-multiprocessing-capturing-signals-to-restart-child-processes-or-shut-do
 | 
						|
    pid, status = os.waitpid(-1, os.WNOHANG | os.WUNTRACED | os.WCONTINUED)
 | 
						|
 | 
						|
    print('Sub-process: pid %d status %d' % (pid, status))
 | 
						|
    if status != 0:
 | 
						|
        sys.exit(1)
 | 
						|
 | 
						|
    raise SystemExit
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
 | 
						|
    #signal.signal(signal.SIGCHLD, sigchld_handler)
 | 
						|
 | 
						|
    # The only way I could find to get Flask to shutdown, is to wrap it and then rely on the subsystem issuing SIGTERM/SIGKILL
 | 
						|
    parse_process = multiprocessing.Process(target=changedetection.main)
 | 
						|
    parse_process.daemon = True
 | 
						|
    parse_process.start()
 | 
						|
    import time
 | 
						|
 | 
						|
    try:
 | 
						|
        while True:
 | 
						|
            time.sleep(1)
 | 
						|
 | 
						|
    except KeyboardInterrupt:
 | 
						|
        #parse_process.terminate() not needed, because this process will issue it to the sub-process anyway
 | 
						|
        print ("Exited - CTRL+C")
 |