]> git.ipfire.org Git - ipfire.org.git/blob - src/scripts/ipfire.org.in
Add script to run background tasks
[ipfire.org.git] / src / scripts / ipfire.org.in
1 #!/usr/bin/python3
2
3 import sys
4 import tornado.gen
5 import tornado.ioloop
6
7 import ipfire
8
9 class TaskRunner(object):
10 def __init__(self, *args, **kwargs):
11 self.backend = ipfire.Backend(*args, **kwargs)
12
13 # Create an IOLoop
14 self.ioloop = tornado.ioloop.IOLoop.current()
15
16 def run_task(self, name, *args, **kwargs):
17 """
18 This method runs the task with the given name and
19 arguments asynchronically and exits the program in
20 case on a non-zero exit code
21 """
22 @tornado.gen.coroutine
23 def task():
24 yield self.backend.run_task(name, *args, **kwargs)
25
26 return self.ioloop.run_sync(task)
27
28
29 def main():
30 z = TaskRunner("@configsdir@/@PACKAGE_NAME@.conf")
31
32 if len(sys.argv) < 2:
33 sys.stderr.write("Argument needed\n")
34 sys.exit(1)
35
36 basename = sys.argv[0]
37 task = sys.argv[1]
38 args = sys.argv[2:]
39
40 # Run the task
41 z.run_task(task, *args)
42
43 main()