summaryrefslogtreecommitdiff
path: root/openerpcommand
diff options
context:
space:
mode:
authorVo Minh Thu <vmt@openerp.com>2013-01-15 15:01:10 +0100
committerVo Minh Thu <vmt@openerp.com>2013-01-15 15:01:10 +0100
commitb146cd6fec80185f157c32f5b5dd68629c1636bd (patch)
tree01b8b8051450ebb0d8038bd6cfde7199a1398ac8 /openerpcommand
parent40c02c12b663acf587dc75c2173d7f31a380794b (diff)
[ADD] oe: added cron sub-command to run a single process dedicated to cron jobs.
bzr revid: vmt@openerp.com-20130115140110-fwu7yb2v0sj3oqqv
Diffstat (limited to 'openerpcommand')
-rw-r--r--openerpcommand/__init__.py3
-rw-r--r--openerpcommand/cron.py55
2 files changed, 57 insertions, 1 deletions
diff --git a/openerpcommand/__init__.py b/openerpcommand/__init__.py
index 5a243ded229..6d41c2842dc 100644
--- a/openerpcommand/__init__.py
+++ b/openerpcommand/__init__.py
@@ -8,6 +8,7 @@ from .bench_sale_mrp import BenchSaleMrp
from . import common
from . import conf # Not really server-side (in the `for` below).
+from . import cron
from . import drop
from . import initialize
from . import model
@@ -19,7 +20,7 @@ from . import uninstall
from . import update
from . import web
-command_list_server = (conf, drop, initialize, model, module, read, run_tests,
+command_list_server = (conf, cron, drop, initialize, model, module, read, run_tests,
scaffold, uninstall, update, web, )
command_list_client = (Call, Open, Show, ConsumeNothing, ConsumeMemory,
diff --git a/openerpcommand/cron.py b/openerpcommand/cron.py
new file mode 100644
index 00000000000..dc74e92ff09
--- /dev/null
+++ b/openerpcommand/cron.py
@@ -0,0 +1,55 @@
+"""
+Run an OpenERP cron process.
+"""
+
+import os
+
+import common
+
+def set_addons(args):
+ import openerp.tools.config
+ config = openerp.tools.config
+
+ assert hasattr(args, 'addons')
+ if args.addons:
+ args.addons = args.addons.split(':')
+ else:
+ args.addons = []
+
+ config['addons_path'] = ','.join(args.addons)
+
+def run(args):
+ import openerp.cli.server
+ import openerp.tools.config
+ import openerp.service.cron
+ config = openerp.tools.config
+
+ os.environ["TZ"] = "UTC"
+ set_addons(args)
+ args.database = args.database or []
+
+ config['log_handler'] = [':WARNING', 'openerp.addons.base.ir.ir_cron:DEBUG']
+
+ openerp.cli.server.check_root_user()
+ openerp.netsvc.init_logger()
+ #openerp.cli.server.report_configuration()
+ openerp.cli.server.configure_babel_localedata_path()
+ openerp.cli.server.setup_signal_handlers()
+ import openerp.addons.base
+ if args.database:
+ for db in args.database:
+ openerp.cli.server.preload_registry(db)
+ openerp.service.cron.start_service()
+ openerp.cli.server.quit_on_signals()
+ else:
+ print "No database given."
+
+
+def add_parser(subparsers):
+ parser = subparsers.add_parser('cron',
+ description='Run an OpenERP cron process.')
+ common.add_addons_argument(parser)
+ parser.add_argument('--database', action='append',
+ help='Database for which cron jobs are processed (can be given repeated)')
+
+ parser.set_defaults(run=run)