|
|
|
#!/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")
|