X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fplanetstack-backend.py;h=7d403c5244fce0a9fcaadef25407054f3c281628;hb=HEAD;hp=7d94b674a621591393af45cbaa2b27aab76e98c5;hpb=757e0b6430223c2de7e9ecf885f307867c373574;p=plstackapi.git diff --git a/planetstack/planetstack-backend.py b/planetstack/planetstack-backend.py old mode 100755 new mode 100644 index 7d94b67..7d403c5 --- a/planetstack/planetstack-backend.py +++ b/planetstack/planetstack-backend.py @@ -1,10 +1,53 @@ #!/usr/bin/env python import os +import argparse os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings") -from observer.backend import Backend +from observer.backend import Backend +from planetstack.config import Config -if __name__ == '__main__': +try: + from django import setup as django_setup # django 1.7 +except: + django_setup = False + +config = Config() + +# after http://www.erlenstar.demon.co.uk/unix/faq_2.html +def daemon(): + """Daemonize the current process.""" + if os.fork() != 0: os._exit(0) + os.setsid() + if os.fork() != 0: os._exit(0) + os.umask(0) + devnull = os.open(os.devnull, os.O_RDWR) + os.dup2(devnull, 0) + # xxx fixme - this is just to make sure that nothing gets stupidly lost - should use devnull + logdir=os.path.dirname(config.observer_logfile) + # when installed in standalone we might not have httpd installed + if not os.path.isdir(logdir): os.mkdir(logdir) + crashlog = os.open('%s'%config.observer_logfile, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0644) + os.dup2(crashlog, 1) + os.dup2(crashlog, 2) + +def main(): + # Generate command line parser + parser = argparse.ArgumentParser(usage='%(prog)s [options]') + parser.add_argument('-d', '--daemon', dest='daemon', action='store_true', default=False, + help='Run as daemon.') + # smbaker: util/config.py parses sys.argv[] directly to get config file name; include the option here to avoid + # throwing unrecognized argument exceptions + parser.add_argument('-C', '--config', dest='config_file', action='store', default="/opt/planetstack/plstackapi_config", + help='Name of config file.') + args = parser.parse_args() + + if args.daemon: daemon() + + if django_setup: # 1.7 + django_setup() backend = Backend() - backend.run() - + backend.run() + +if __name__ == '__main__': + + main()