diff foodtruck/main.py @ 587:d4a01a023998

admin: Add "FoodTruck" admin panel from the side experiment project.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 16 Jan 2016 14:24:35 -0800
parents
children b884bef3e611
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foodtruck/main.py	Sat Jan 16 14:24:35 2016 -0800
@@ -0,0 +1,54 @@
+import sys
+import logging
+import argparse
+from .web import app
+
+
+logger = logging.getLogger(__name__)
+
+
+def main():
+    parser = argparse.ArgumentParser(
+            description="FoodTruck command line utility")
+    parser.add_argument(
+            '--debug',
+            help="Show debug information",
+            action='store_true')
+    parser.add_argument(
+            '--version',
+            help="Print version and exit",
+            action='store_true')
+
+    args = parser.parse_args()
+    if args.version:
+        try:
+            from .__version__ import version
+        except ImportError:
+            print("Can't find version information.")
+            args.exit(1)
+        print("FoodTruck %s" % version)
+        args.exit(0)
+
+    root_logger = logging.getLogger()
+    root_logger.setLevel(logging.INFO)
+    if args.debug:
+        root_logger.setLevel(logging.DEBUG)
+
+    log_handler = logging.StreamHandler(sys.stdout)
+    if args.debug:
+        log_handler.setLevel(logging.DEBUG)
+    else:
+        log_handler.setLevel(logging.INFO)
+    root_logger.addHandler(log_handler)
+
+    try:
+        app.run(debug=args.debug, threaded=True)
+    except SystemExit:
+        # This is needed for Werkzeug's code reloader to be able to correctly
+        # shutdown the child process in order to restart it (otherwise, SSE
+        # generators will keep it alive).
+        from .views import baking
+        logger.debug("Shutting down SSE generators from main...")
+        baking.server_shutdown = True
+        raise
+