]> git.treefish.org Git - photosort.git/blob - src/photosort-daemon.py
continue with daemon implementation
[photosort.git] / src / photosort-daemon.py
1 #!/usr/bin/env python3
2
3 import argparse
4 import json
5 import logging
6 import os
7 import signal
8 import time
9
10 from bunch import Bunch
11
12 def handle_interrupt(sig, frame):
13     global stop
14     if os.getpid() == main_pid:
15         logging.info( "Got stop signal." )
16         stop = True
17
18 main_pid = os.getpid()
19 signal.signal(signal.SIGINT, handle_interrupt)
20 stop = False
21
22 parser = argparse.ArgumentParser(description='Photo Sort Daemon.')
23 parser.add_argument('config_file', type=str, help='path to config file')
24 parser.add_argument('-l', '--log-level', type=str, default='INFO', dest='log_lvl',
25                     choices=['DEBUG', 'INFO', 'WARNING'], help='select log level')
26
27 args = parser.parse_args()
28
29 logging.basicConfig(format='[%(asctime)s] %(levelname)s: %(message)s',
30                     level=logging.getLevelName(args.log_lvl),
31                     datefmt='%m/%d/%Y %H:%M:%S')
32
33 with open(args.config_file) as f:
34     cfg = json.load(f)
35
36 bunches = []
37 for bunch_cfg in cfg['bunches']:
38     bunches.append( Bunch(bunch_cfg) )
39
40
41 for bunch in bunches:
42     bunch.start()
43
44 while not stop:
45     for bunch in bunches:
46         if not bunch.is_running():
47             stop = True
48     time.sleep(2.0)
49
50 for bunch in bunches:
51     bunch.stop()