Minor bug fixes
[plstackapi.git] / planetstack / planetstack-backend.py
1 #!/usr/bin/env python
2 import os
3 import argparse
4 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
5 from observer.backend import Backend
6 from planetstack.config import Config 
7
8 config = Config()
9
10 # after http://www.erlenstar.demon.co.uk/unix/faq_2.html
11 def daemon():
12     """Daemonize the current process."""
13     if os.fork() != 0: os._exit(0)
14     os.setsid()
15     if os.fork() != 0: os._exit(0)
16     os.umask(0)
17     devnull = os.open(os.devnull, os.O_RDWR)
18     os.dup2(devnull, 0)
19     # xxx fixme - this is just to make sure that nothing gets stupidly lost - should use devnull
20     logdir=os.path.dirname(config.observer_logfile)
21     # when installed in standalone we might not have httpd installed
22     if not os.path.isdir(logdir): os.mkdir(logdir)
23     crashlog = os.open('%s'%config.observer_logfile, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0644)
24     os.dup2(crashlog, 1)
25     os.dup2(crashlog, 2)
26
27 def main():
28     # Generate command line parser
29     parser = argparse.ArgumentParser(usage='%(prog)s [options]')
30     parser.add_argument('-d', '--daemon', dest='daemon', action='store_true', default=False, 
31                         help='Run as daemon.')
32     # smbaker: util/config.py parses sys.argv[] directly to get config file name; include the option here to avoid
33     #   throwing unrecognized argument exceptions
34     parser.add_argument('-C', '--config', dest='config_file', action='store', default="/opt/planetstack/plstackapi_config",
35                         help='Name of config file.')
36     args = parser.parse_args()
37        
38     if args.daemon: daemon()
39
40     backend = Backend()
41     backend.run()    
42
43 if __name__ == '__main__':
44     
45     main()