mirror of https://github.com/jumpserver/jumpserver
fix: 账号备份,云同步定时任务不执行
parent
2b220d3753
commit
9439035b86
|
@ -57,21 +57,22 @@ def register_as_period_task(
|
||||||
task = '{func.__module__}.{func.__name__}'.format(func=func)
|
task = '{func.__module__}.{func.__name__}'.format(func=func)
|
||||||
_name = name if name else task
|
_name = name if name else task
|
||||||
add_register_period_task({
|
add_register_period_task({
|
||||||
_name: {
|
_name: {
|
||||||
'task': task,
|
'task': task,
|
||||||
'interval': interval,
|
'interval': interval,
|
||||||
'crontab': crontab,
|
'crontab': crontab,
|
||||||
'args': args,
|
'args': args,
|
||||||
'kwargs': kwargs if kwargs else {},
|
'kwargs': kwargs if kwargs else {},
|
||||||
'enabled': True,
|
'description': description
|
||||||
'description': description
|
}
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
return decorate
|
return decorate
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,6 +86,7 @@ def after_app_ready_start(func):
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
def decorate(*args, **kwargs):
|
def decorate(*args, **kwargs):
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
|
|
||||||
return decorate
|
return decorate
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,4 +100,5 @@ def after_app_shutdown_clean_periodic(func):
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
def decorate(*args, **kwargs):
|
def decorate(*args, **kwargs):
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
|
|
||||||
return decorate
|
return decorate
|
||||||
|
|
|
@ -80,6 +80,9 @@ def create_or_update_celery_periodic_tasks(tasks):
|
||||||
description=detail.get('description') or '',
|
description=detail.get('description') or '',
|
||||||
last_run_at=last_run_at,
|
last_run_at=last_run_at,
|
||||||
)
|
)
|
||||||
|
enabled = detail.get('enabled')
|
||||||
|
if enabled is not None:
|
||||||
|
defaults["enabled"] = enabled
|
||||||
task = PeriodicTask.objects.update_or_create(
|
task = PeriodicTask.objects.update_or_create(
|
||||||
defaults=defaults, name=name,
|
defaults=defaults, name=name,
|
||||||
)
|
)
|
||||||
|
|
|
@ -93,7 +93,10 @@ class LDAPSettingSerializer(serializers.Serializer):
|
||||||
|
|
||||||
AUTH_LDAP = serializers.BooleanField(required=False, label=_('Enable LDAP auth'))
|
AUTH_LDAP = serializers.BooleanField(required=False, label=_('Enable LDAP auth'))
|
||||||
|
|
||||||
@staticmethod
|
def post_save(self):
|
||||||
def post_save():
|
keys = ['AUTH_LDAP_SYNC_IS_PERIODIC', 'AUTH_LDAP_SYNC_INTERVAL', 'AUTH_LDAP_SYNC_CRONTAB']
|
||||||
|
kwargs = {k: self.validated_data[k] for k in keys if k in self.validated_data}
|
||||||
|
if not kwargs:
|
||||||
|
return
|
||||||
from settings.tasks import import_ldap_user_periodic
|
from settings.tasks import import_ldap_user_periodic
|
||||||
import_ldap_user_periodic()
|
import_ldap_user_periodic(**kwargs)
|
||||||
|
|
|
@ -9,7 +9,7 @@ from common.utils import get_logger
|
||||||
from common.utils.timezone import local_now_display
|
from common.utils.timezone import local_now_display
|
||||||
from ops.celery.decorator import after_app_ready_start
|
from ops.celery.decorator import after_app_ready_start
|
||||||
from ops.celery.utils import (
|
from ops.celery.utils import (
|
||||||
create_or_update_celery_periodic_tasks, delete_celery_periodic_task
|
create_or_update_celery_periodic_tasks, disable_celery_periodic_task
|
||||||
)
|
)
|
||||||
from orgs.models import Organization
|
from orgs.models import Organization
|
||||||
from settings.notifications import LDAPImportMessage
|
from settings.notifications import LDAPImportMessage
|
||||||
|
@ -65,20 +65,15 @@ def import_ldap_user():
|
||||||
|
|
||||||
@shared_task(verbose_name=_('Registration periodic import ldap user task'))
|
@shared_task(verbose_name=_('Registration periodic import ldap user task'))
|
||||||
@after_app_ready_start
|
@after_app_ready_start
|
||||||
def import_ldap_user_periodic():
|
def import_ldap_user_periodic(**kwargs):
|
||||||
if not settings.AUTH_LDAP:
|
|
||||||
return
|
|
||||||
task_name = 'import_ldap_user_periodic'
|
task_name = 'import_ldap_user_periodic'
|
||||||
delete_celery_periodic_task(task_name)
|
interval = kwargs.get('AUTH_LDAP_SYNC_INTERVAL', settings.AUTH_LDAP_SYNC_INTERVAL)
|
||||||
if not settings.AUTH_LDAP_SYNC_IS_PERIODIC:
|
enabled = kwargs.get('AUTH_LDAP_SYNC_IS_PERIODIC', settings.AUTH_LDAP_SYNC_IS_PERIODIC)
|
||||||
return
|
crontab = kwargs.get('AUTH_LDAP_SYNC_CRONTAB', settings.AUTH_LDAP_SYNC_CRONTAB)
|
||||||
|
|
||||||
interval = settings.AUTH_LDAP_SYNC_INTERVAL
|
|
||||||
if isinstance(interval, int):
|
if isinstance(interval, int):
|
||||||
interval = interval * 3600
|
interval = interval * 3600
|
||||||
else:
|
else:
|
||||||
interval = None
|
interval = None
|
||||||
crontab = settings.AUTH_LDAP_SYNC_CRONTAB
|
|
||||||
if crontab:
|
if crontab:
|
||||||
# 优先使用 crontab
|
# 优先使用 crontab
|
||||||
interval = None
|
interval = None
|
||||||
|
@ -86,7 +81,8 @@ def import_ldap_user_periodic():
|
||||||
task_name: {
|
task_name: {
|
||||||
'task': import_ldap_user.name,
|
'task': import_ldap_user.name,
|
||||||
'interval': interval,
|
'interval': interval,
|
||||||
'crontab': crontab
|
'crontab': crontab,
|
||||||
|
'enabled': enabled
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
create_or_update_celery_periodic_tasks(tasks)
|
create_or_update_celery_periodic_tasks(tasks)
|
||||||
|
|
Loading…
Reference in New Issue