comparison piecrust/commands/builtin/admin.py @ 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 466bbddd121e
children c84647485ab2
comparison
equal deleted inserted replaced
655:9c0092fae31d 656:dba53f0f7671
1 import os 1 import os
2 import os.path
2 import logging 3 import logging
3 from piecrust import CACHE_DIR 4 from piecrust import CACHE_DIR
4 from piecrust.commands.base import ChefCommand 5 from piecrust.commands.base import ChefCommand
5 6
6 7
38 default=8090) 39 default=8090)
39 p.add_argument( 40 p.add_argument(
40 '-a', '--address', 41 '-a', '--address',
41 help="The host for the administrative panel website.", 42 help="The host for the administrative panel website.",
42 default='localhost') 43 default='localhost')
44 p.add_argument(
45 '--no-assets',
46 help="Don't process and monitor the asset folder(s).",
47 dest='monitor_assets',
48 action='store_false')
43 p.set_defaults(sub_func=self._runFoodTruck) 49 p.set_defaults(sub_func=self._runFoodTruck)
44 50
45 def checkedRun(self, ctx): 51 def checkedRun(self, ctx):
46 if not hasattr(ctx.args, 'sub_func'): 52 if not hasattr(ctx.args, 'sub_func'):
47 return self._runFoodTruck(ctx) 53 return self._runFoodTruck(ctx)
48 return ctx.args.sub_func(ctx) 54 return ctx.args.sub_func(ctx)
49 55
50 def _runFoodTruck(self, ctx): 56 def _runFoodTruck(self, ctx):
51 from piecrust.processing.pipeline import ProcessorPipeline 57 # See `_run_sse_check` in `piecrust.serving.wrappers` for an explanation
52 out_dir = os.path.join( 58 # of this check.
53 ctx.app.root_dir, CACHE_DIR, 'foodtruck', 'server') 59 if (ctx.args.monitor_assets and (
54 proc = ProcessorPipeline(ctx.app, out_dir) 60 not ctx.args.debug or
55 proc.run() 61 os.environ.get('WERKZEUG_RUN_MAIN') == 'true')):
62 from piecrust.serving.procloop import ProcessingLoop
63 out_dir = os.path.join(ctx.app.root_dir, CACHE_DIR, 'foodtruck', 'server')
64 proc_loop = ProcessingLoop(ctx.app.root_dir, out_dir, debug=ctx.args.debug)
65 proc_loop.start()
56 66
57 from foodtruck import settings 67 from foodtruck import settings
58 settings.FOODTRUCK_CMDLINE_MODE = True 68 settings.FOODTRUCK_CMDLINE_MODE = True
59 settings.FOODTRUCK_ROOT = ctx.app.root_dir 69 settings.FOODTRUCK_ROOT = ctx.app.root_dir
60 from foodtruck.main import run_foodtruck 70 from foodtruck.main import run_foodtruck