sync.py
1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
import sys
import os
from configparser import ConfigParser
from argparse import ArgumentParser
from datetime import (
datetime,
date,
timedelta,
)
from opensipkd.iso8583.bjb.scripts.common import get_module_object
from .logger import setup_logging
def is_live(pid):
try:
os.kill(pid, 0)
except OSError:
return
return True
def read_pid_file(filename):
try:
with open(filename) as f:
s = f.read()
s = s.split()
s = s[0]
return int(s)
except IOError:
return
except ValueError:
return
except IndexError:
return
def write_pid_file(filename):
pid = os.getpid()
with open(filename, 'w') as f:
f.write(str(pid))
return pid
def make_pid_file(filename):
pid = read_pid_file(filename)
if pid and is_live(pid):
print(f'PID saya {pid} masih aktif.')
return
return write_pid_file(filename)
def get_parser():
pars = ArgumentParser()
pars.add_argument('conf')
pars.add_argument('--update-from-date')
return pars
def get_option(argv):
pars = get_parser()
return pars.parse_args(argv)
def main(argv=sys.argv[1:]):
option = get_option(argv)
conf = ConfigParser()
conf.read(option.conf)
cf = dict(conf.items('main'))
if not make_pid_file(cf['pid_file']):
return
setup_logging(option.conf)
if option.update_from_date:
try:
days_ago = int(option.update_from_date)
cf['tgl_awal'] = date.today() + timedelta(days_ago)
except ValueError:
t = option.update_from_date.split(',')
cf['tgl_awal'] = datetime.strptime(t[0], '%d-%m-%Y')
if t[1:]:
cf['tgl_akhir'] = datetime.strptime(t[1], '%d-%m-%Y')
module = get_module_object(conf.get('main', 'module'))
app = module.App(cf)
app.run()