[ADD] oe: added cron sub-command to run a single process dedicated to cron jobs.

bzr revid: vmt@openerp.com-20130115140110-fwu7yb2v0sj3oqqv
This commit is contained in:
Vo Minh Thu 2013-01-15 15:01:10 +01:00
parent 40c02c12b6
commit b146cd6fec
3 changed files with 61 additions and 1 deletions

View File

@ -135,6 +135,10 @@ class ir_cron(osv.osv):
_logger.debug('%.3fs (%s, %s)' % (end_time - start_time, model_name, method_name))
except Exception, e:
self._handle_callback_exception(cr, uid, model_name, method_name, args, job_id, e)
else:
msg = "Method `%s.%s` do not exist." % (model._name, method_name) \
if model else "Model `%s` do not exist." % model._name
_logger.warning(msg)
def _process_job(self, job_cr, job, cron_cr):
""" Run a given job taking care of the repetition.

View File

@ -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,

55
openerpcommand/cron.py Normal file
View File

@ -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)