From 451e61bb61f9effee49b4676297f77ff80b5bd9d Mon Sep 17 00:00:00 2001 From: ibuler Date: Mon, 17 Jan 2022 11:07:27 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=20celery=20=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=AD=E7=9A=84=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit perf: add comment --- apps/common/db/utils.py | 1 + apps/ops/signals_handler.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/common/db/utils.py b/apps/common/db/utils.py index eb6328a9f..23384f2c8 100644 --- a/apps/common/db/utils.py +++ b/apps/common/db/utils.py @@ -44,6 +44,7 @@ def get_objects(model, pks): return objs +# 复制 django.db.close_old_connections, 因为它没有导出,ide 提示有问题 def close_old_connections(): for conn in connections.all(): conn.close_if_unusable_or_obsolete() diff --git a/apps/ops/signals_handler.py b/apps/ops/signals_handler.py index a4d6fb4eb..dfd364845 100644 --- a/apps/ops/signals_handler.py +++ b/apps/ops/signals_handler.py @@ -1,6 +1,8 @@ from django.utils import translation from django.core.cache import cache -from celery.signals import task_prerun, before_task_publish +from celery.signals import task_prerun, task_postrun, before_task_publish + +from common.db.utils import close_old_connections TASK_LANG_CACHE_KEY = 'TASK_LANG_{}' @@ -17,7 +19,16 @@ def before_task_publish(headers=None, **kwargs): @task_prerun.connect() def on_celery_task_pre_run(task_id='', **kwargs): + # 关闭之前的数据库连接 + close_old_connections() + + # 保存 Lang context key = TASK_LANG_CACHE_KEY.format(task_id) task_lang = cache.get(key) if task_lang: translation.activate(task_lang) + + +@task_postrun.connect() +def on_celery_task_post_run(**kwargs): + close_old_connections()