feat(ldap): 获取ldap用户列表,采用线程方式

pull/4548/head
Bai 2020-09-07 20:33:44 +08:00 committed by 老广
parent d944b5f4ff
commit 80b9db417c
2 changed files with 8 additions and 9 deletions

View File

@ -2,6 +2,7 @@
# #
import json import json
import threading
from collections.abc import Iterable from collections.abc import Iterable
from smtplib import SMTPSenderRefused from smtplib import SMTPSenderRefused
from rest_framework import generics from rest_framework import generics
@ -15,7 +16,7 @@ from .utils import (
LDAPServerUtil, LDAPCacheUtil, LDAPImportUtil, LDAPSyncUtil, LDAPServerUtil, LDAPCacheUtil, LDAPImportUtil, LDAPSyncUtil,
LDAP_USE_CACHE_FLAGS, LDAPTestUtil, ObjectDict LDAP_USE_CACHE_FLAGS, LDAPTestUtil, ObjectDict
) )
from .tasks import sync_ldap_user_task from .tasks import sync_ldap_user
from common.permissions import IsOrgAdmin, IsSuperUser from common.permissions import IsOrgAdmin, IsSuperUser
from common.utils import get_logger from common.utils import get_logger
from .serializers import ( from .serializers import (
@ -204,8 +205,9 @@ class LDAPUserListApi(generics.ListAPIView):
if sync_util.task_no_start: if sync_util.task_no_start:
# 任务外部设置 task running 状态 # 任务外部设置 task running 状态
sync_util.set_task_status(sync_util.TASK_STATUS_IS_RUNNING) sync_util.set_task_status(sync_util.TASK_STATUS_IS_RUNNING)
task = sync_ldap_user_task.delay() t = threading.Thread(target=sync_ldap_user)
data = {'msg': 'Cache no data, sync task {} started.'.format(task.id)} t.start()
data = {'msg': 'Sync start.'}
return Response(data=data, status=409) return Response(data=data, status=409)
# 同步任务正在执行 # 同步任务正在执行
if sync_util.task_is_running: if sync_util.task_is_running:
@ -214,7 +216,7 @@ class LDAPUserListApi(generics.ListAPIView):
# 同步任务执行结束 # 同步任务执行结束
if sync_util.task_is_over: if sync_util.task_is_over:
msg = sync_util.get_task_error_msg() msg = sync_util.get_task_error_msg()
data = {'error': 'Synchronization task report error: {}'.format(msg)} data = {'error': 'Synchronization error: {}'.format(msg)}
return Response(data=data, status=400) return Response(data=data, status=400)
return super().list(request, *args, **kwargs) return super().list(request, *args, **kwargs)

View File

@ -1,17 +1,14 @@
# coding: utf-8 # coding: utf-8
# #
from celery import shared_task
from common.utils import get_logger from common.utils import get_logger
from ..utils import LDAPSyncUtil from ..utils import LDAPSyncUtil
__all__ = ['sync_ldap_user_task'] __all__ = ['sync_ldap_user']
logger = get_logger(__file__) logger = get_logger(__file__)
@shared_task def sync_ldap_user():
def sync_ldap_user_task():
LDAPSyncUtil().perform_sync() LDAPSyncUtil().perform_sync()