diff --git a/trytond/ir/cron.py b/trytond/ir/cron.py index 4ec0b08f4e..de9869c3b2 100644 --- a/trytond/ir/cron.py +++ b/trytond/ir/cron.py @@ -15,6 +15,7 @@ from ..transaction import Transaction from ..pool import Pool from ..config import config from ..sendmail import sendmail +from trytond.worker import run_task __all__ = [ 'Cron', @@ -184,3 +185,6 @@ class Cron(DeactivableMixin, ModelSQL, ModelView): except Exception: transaction.rollback() logger.error('Running cron %s', cron.id, exc_info=True) + while transaction.tasks: + task_id = transaction.tasks.pop() + run_task(db_name, task_id) diff --git a/trytond/protocols/wrappers.py b/trytond/protocols/wrappers.py index 8b8bdffe54..91654101ac 100644 --- a/trytond/protocols/wrappers.py +++ b/trytond/protocols/wrappers.py @@ -124,6 +124,8 @@ def with_pool(func): def with_transaction(readonly=None): + from trytond.worker import run_task + def decorator(func): @wraps(func) def wrapper(request, pool, *args, **kwargs): @@ -152,6 +154,9 @@ def with_transaction(readonly=None): raise # Need to commit to unlock SQLite database transaction.commit() + while transaction.tasks: + task_id = transaction.tasks.pop() + run_task(pool, task_id) return result return wrapper return decorator