Files
jumpserver/apps/ops/signals_handler.py
ibuler 145c7952c9 perf: 优化 ops 任务,支持 i18n
- 内置任务名称支持了 i18n,数据库存英文,返回是翻译一下
- 任务执行中,添加 language 上下文
2022-01-13 15:03:48 +08:00

24 lines
654 B
Python

from django.utils import translation
from django.core.cache import cache
from celery.signals import task_prerun, before_task_publish
TASK_LANG_CACHE_KEY = 'TASK_LANG_{}'
TASK_LANG_CACHE_TTL = 1800
@before_task_publish.connect()
def before_task_publish(headers=None, **kwargs):
task_id = headers.get('id')
current_lang = translation.get_language()
key = TASK_LANG_CACHE_KEY.format(task_id)
cache.set(key, current_lang, 1800)
@task_prerun.connect()
def on_celery_task_pre_run(task_id='', **kwargs):
key = TASK_LANG_CACHE_KEY.format(task_id)
task_lang = cache.get(key)
if task_lang:
translation.activate(task_lang)