From be9d312fc0e472f79ba64aa3e062b00aefd4a43b Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 17 Sep 2021 11:43:21 +0200 Subject: [PATCH] provisionning: close connection to DB in spooler function (#57023) --- hobo/provisionning/spooler.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/hobo/provisionning/spooler.py b/hobo/provisionning/spooler.py index 8a5aa7a..ed6e101 100644 --- a/hobo/provisionning/spooler.py +++ b/hobo/provisionning/spooler.py @@ -1,13 +1,29 @@ +import functools import json import logging -from django.db import connection +from django.db import close_old_connections, connection from uwsgidecorators import spool import hobo.multitenant.settings_loaders # this will get imported via importlib but fail for some reason in a uwsgi job from hobo.provisionning.utils import NotificationProcessing +def ensure_db(func): + """Emulate Django"s setup/teardown of database connections before/after + each request""" + + @functools.wraps(func) + def f(*args, **kwargs): + close_old_connections() + try: + return func(*args, **kwargs) + finally: + close_old_connections() + + return f + + def set_connection(domain): from hobo.multitenant.middleware import TenantMiddleware @@ -16,6 +32,7 @@ def set_connection(domain): @spool +@ensure_db def provision(args): try: set_connection(args['domain']) -- 2.33.0