forked from clicon/clixon-pyapi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclixon_server.py
executable file
·51 lines (41 loc) · 1.2 KB
/
clixon_server.py
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
#!/usr/bin/env python3
from clixon.version import __version__
from clixon.modules import load_modules
from clixon.client import readloop
from clixon.args import parse_args, get_logger
from daemonize import Daemonize
import sys
import os
(sockpath, mpath, mfilter, pidfile, foreground,
pp, _, _) = parse_args(sys.argv[1:])
logger = get_logger()
lockfd = None
def main() -> None:
"""
Main function for clixon_server.
"""
modules = []
for path in mpath:
sys.path.append(path)
modules.extend(load_modules(path, mfilter))
if modules == []:
logger.error("No loadable modules found.")
sys.exit(0)
try:
readloop(sockpath, modules, pp)
except IOError as e:
logger.error(f"IO error: {e}")
except Exception as e:
logger.error(e)
except KeyboardInterrupt:
logger.info("\nGoodbye.")
if __name__ == "__main__":
if foreground:
main()
else:
daemon = Daemonize(app="clixon_server", pid=pidfile, action=main,
logger=logger,
foreground=foreground,
verbose=True,
chdir=os.getcwd())
daemon.start()