changeset 656:dba53f0f7671

admin: run an asset processing loop in the background.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 22 Feb 2016 22:44:39 -0800
parents 9c0092fae31d
children c1a94e1beb9d
files piecrust/commands/builtin/admin.py
diffstat 1 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/commands/builtin/admin.py	Mon Feb 22 22:50:30 2016 -0800
+++ b/piecrust/commands/builtin/admin.py	Mon Feb 22 22:44:39 2016 -0800
@@ -1,4 +1,5 @@
 import os
+import os.path
 import logging
 from piecrust import CACHE_DIR
 from piecrust.commands.base import ChefCommand
@@ -40,6 +41,11 @@
                 '-a', '--address',
                 help="The host for the administrative panel website.",
                 default='localhost')
+        p.add_argument(
+                '--no-assets',
+                help="Don't process and monitor the asset folder(s).",
+                dest='monitor_assets',
+                action='store_false')
         p.set_defaults(sub_func=self._runFoodTruck)
 
     def checkedRun(self, ctx):
@@ -48,11 +54,15 @@
         return ctx.args.sub_func(ctx)
 
     def _runFoodTruck(self, ctx):
-        from piecrust.processing.pipeline import ProcessorPipeline
-        out_dir = os.path.join(
-                ctx.app.root_dir, CACHE_DIR, 'foodtruck', 'server')
-        proc = ProcessorPipeline(ctx.app, out_dir)
-        proc.run()
+        # See `_run_sse_check` in `piecrust.serving.wrappers` for an explanation
+        # of this check.
+        if (ctx.args.monitor_assets and (
+                not ctx.args.debug or
+                os.environ.get('WERKZEUG_RUN_MAIN') == 'true')):
+            from piecrust.serving.procloop import ProcessingLoop
+            out_dir = os.path.join(ctx.app.root_dir, CACHE_DIR, 'foodtruck', 'server')
+            proc_loop = ProcessingLoop(ctx.app.root_dir, out_dir, debug=ctx.args.debug)
+            proc_loop.start()
 
         from foodtruck import settings
         settings.FOODTRUCK_CMDLINE_MODE = True