mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-18 00:08:31 +00:00
Config (#3502)
* [Update] 修改config * [Update] 移动存储设置到到terminal中 * [Update] 修改permission 查看 * [Update] pre merge * [Update] 录像存储 * [Update] 命令存储 * [Update] 添加存储测试可连接性 * [Update] 修改 meta 值的 key 为大写 * [Update] 修改 Terminal 相关 Storage 配置 * [Update] 删除之前获取录像/命令存储的代码 * [Update] 修改导入失败 * [Update] 迁移文件添加default存储 * [Update] 删除之前代码,添加help_text信息 * [Update] 删除之前代码 * [Update] 删除之前代码 * [Update] 抽象命令/录像存储 APIView * [Update] 抽象命令/录像存储 APIView 1 * [Update] 抽象命令/录像存储 DictField * [Update] 抽象命令/录像存储列表页面 * [Update] 修复CustomDictField的bug * [Update] RemoteApp 页面添加 hidden * [Update] 用户页面添加用户关联授权 * [Update] 修改存储测试可连接性 target * [Update] 修改配置 * [Update] 修改存储前端 Form 渲染逻辑 * [Update] 修改存储细节 * [Update] 统一存储类型到 const 文件 * [Update] 修改迁移文件及Model,创建默认存储 * [Update] 修改迁移文件及Model初始化默认数据 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 修改迁移文件 * [Update] 限制删除默认存储配置,只允许创建扩展的存储类型 * [Update] 修改ip字段长度 * [Update] 修改ip字段长度 * [Update] 修改一些css * [Update] 修改关联 * [Update] 添加操作日志定时清理 * [Update] 修改记录syslog的instance encoder * [Update] 忽略登录产生的操作日志 * [Update] 限制更新存储时不覆盖原有AK SK 等字段 * [Update] 修改迁移文件添加comment字段 * [Update] 修改迁移文件 * [Update] 添加 comment 字段 * [Update] 修改默认存储no -> null * [Update] 修改细节 * [Update] 更新翻译(存储配置 * [Update] 修改定时任务注册,修改系统用户资产、节点关系api * [Update] 添加监控磁盘任务 * [Update] 修改session * [Update] 拆分serializer * [Update] 还原setting原来的manager
This commit is contained in:
@@ -9,51 +9,37 @@ _after_app_shutdown_clean_periodic_tasks = []
|
||||
|
||||
def add_register_period_task(task):
|
||||
_need_registered_period_tasks.append(task)
|
||||
# key = "__REGISTER_PERIODIC_TASKS"
|
||||
# value = cache.get(key, [])
|
||||
# value.append(name)
|
||||
# cache.set(key, value)
|
||||
|
||||
|
||||
def get_register_period_tasks():
|
||||
# key = "__REGISTER_PERIODIC_TASKS"
|
||||
# return cache.get(key, [])
|
||||
return _need_registered_period_tasks
|
||||
|
||||
|
||||
def add_after_app_shutdown_clean_task(name):
|
||||
# key = "__AFTER_APP_SHUTDOWN_CLEAN_TASKS"
|
||||
# value = cache.get(key, [])
|
||||
# value.append(name)
|
||||
# cache.set(key, value)
|
||||
_after_app_shutdown_clean_periodic_tasks.append(name)
|
||||
|
||||
|
||||
def get_after_app_shutdown_clean_tasks():
|
||||
# key = "__AFTER_APP_SHUTDOWN_CLEAN_TASKS"
|
||||
# return cache.get(key, [])
|
||||
return _after_app_shutdown_clean_periodic_tasks
|
||||
|
||||
|
||||
def add_after_app_ready_task(name):
|
||||
# key = "__AFTER_APP_READY_RUN_TASKS"
|
||||
# value = cache.get(key, [])
|
||||
# value.append(name)
|
||||
# cache.set(key, value)
|
||||
_after_app_ready_start_tasks.append(name)
|
||||
|
||||
|
||||
def get_after_app_ready_tasks():
|
||||
# key = "__AFTER_APP_READY_RUN_TASKS"
|
||||
# return cache.get(key, [])
|
||||
return _after_app_ready_start_tasks
|
||||
|
||||
|
||||
def register_as_period_task(crontab=None, interval=None):
|
||||
def register_as_period_task(
|
||||
crontab=None, interval=None, name=None,
|
||||
description=''):
|
||||
"""
|
||||
Warning: Task must be have not any args and kwargs
|
||||
:param crontab: "* * * * *"
|
||||
:param interval: 60*60*60
|
||||
:param description: "
|
||||
:param name: ""
|
||||
:return:
|
||||
"""
|
||||
if crontab is None and interval is None:
|
||||
@@ -65,14 +51,16 @@ def register_as_period_task(crontab=None, interval=None):
|
||||
|
||||
# Because when this decorator run, the task was not created,
|
||||
# So we can't use func.name
|
||||
name = '{func.__module__}.{func.__name__}'.format(func=func)
|
||||
task = '{func.__module__}.{func.__name__}'.format(func=func)
|
||||
_name = name if name else task
|
||||
add_register_period_task({
|
||||
name: {
|
||||
'task': name,
|
||||
_name: {
|
||||
'task': task,
|
||||
'interval': interval,
|
||||
'crontab': crontab,
|
||||
'args': (),
|
||||
'enabled': True,
|
||||
'description': description
|
||||
}
|
||||
})
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
import logging
|
||||
from django.dispatch import receiver
|
||||
|
||||
from django.core.cache import cache
|
||||
from celery import subtask
|
||||
@@ -11,6 +12,7 @@ from kombu.utils.encoding import safe_str
|
||||
from django_celery_beat.models import PeriodicTask
|
||||
|
||||
from common.utils import get_logger
|
||||
from common.signals import django_ready
|
||||
from .decorator import get_after_app_ready_tasks, get_after_app_shutdown_clean_tasks
|
||||
from .logger import CeleryTaskFileHandler
|
||||
|
||||
|
@@ -10,6 +10,10 @@ from django_celery_beat.models import (
|
||||
PeriodicTask, IntervalSchedule, CrontabSchedule, PeriodicTasks
|
||||
)
|
||||
|
||||
from common.utils import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
def create_or_update_celery_periodic_tasks(tasks):
|
||||
"""
|
||||
@@ -21,6 +25,7 @@ def create_or_update_celery_periodic_tasks(tasks):
|
||||
'args': (16, 16),
|
||||
'kwargs': {},
|
||||
'enabled': False,
|
||||
'description': ''
|
||||
},
|
||||
}
|
||||
:return:
|
||||
@@ -35,34 +40,30 @@ def create_or_update_celery_periodic_tasks(tasks):
|
||||
return None
|
||||
|
||||
if isinstance(detail.get("interval"), int):
|
||||
intervals = IntervalSchedule.objects.filter(
|
||||
every=detail["interval"], period=IntervalSchedule.SECONDS
|
||||
kwargs = dict(
|
||||
every=detail['interval'],
|
||||
period=IntervalSchedule.SECONDS,
|
||||
)
|
||||
if intervals:
|
||||
interval = intervals[0]
|
||||
else:
|
||||
interval = IntervalSchedule.objects.create(
|
||||
every=detail['interval'],
|
||||
period=IntervalSchedule.SECONDS,
|
||||
)
|
||||
# 不能使用 get_or_create,因为可能会有多个
|
||||
interval = IntervalSchedule.objects.filter(**kwargs).first()
|
||||
if interval is None:
|
||||
interval = IntervalSchedule.objects.create(**kwargs)
|
||||
elif isinstance(detail.get("crontab"), str):
|
||||
try:
|
||||
minute, hour, day, month, week = detail["crontab"].split()
|
||||
except ValueError:
|
||||
raise SyntaxError("crontab is not valid")
|
||||
logger.error("crontab is not valid")
|
||||
return
|
||||
kwargs = dict(
|
||||
minute=minute, hour=hour, day_of_week=week,
|
||||
day_of_month=day, month_of_year=month, timezone=get_current_timezone()
|
||||
)
|
||||
contabs = CrontabSchedule.objects.filter(
|
||||
**kwargs
|
||||
)
|
||||
if contabs:
|
||||
crontab = contabs[0]
|
||||
else:
|
||||
crontab = CrontabSchedule.objects.filter(**kwargs).first()
|
||||
if crontab is None:
|
||||
crontab = CrontabSchedule.objects.create(**kwargs)
|
||||
else:
|
||||
raise SyntaxError("Schedule is not valid")
|
||||
logger.error("Schedule is not valid")
|
||||
return
|
||||
|
||||
defaults = dict(
|
||||
interval=interval,
|
||||
@@ -71,8 +72,9 @@ def create_or_update_celery_periodic_tasks(tasks):
|
||||
task=detail['task'],
|
||||
args=json.dumps(detail.get('args', [])),
|
||||
kwargs=json.dumps(detail.get('kwargs', {})),
|
||||
enabled=detail.get('enabled', True),
|
||||
description=detail.get('description') or ''
|
||||
)
|
||||
print(defaults)
|
||||
|
||||
task = PeriodicTask.objects.update_or_create(
|
||||
defaults=defaults, name=name,
|
||||
|
Reference in New Issue
Block a user