You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python LDAP脚本:实现指定成功输出次数后添加延迟

Python LDAP批量添加用户到组时实现间隔延迟的正确方法

你的核心需求是:批量添加用户到LDAP组的过程中,每成功添加700次就插入一段延迟。之前的实现错误在于用了组标识i或者错误的列表判断逻辑,根本没统计成功次数。

正确实现思路

  1. 初始化一个计数器,专门统计成功添加的次数(失败操作不计入)
  2. 每次成功执行添加操作后,计数器加1
  3. 当计数器达到设定阈值(比如700)时,执行延迟,然后重置计数器(确保每700次触发一次延迟)

修正后的完整代码

#!/usr/bin/env python
# /usr/bin/python2.6

import time
import ldap  # 原代码可能遗漏了ldap模块导入,需补充

# 初始化成功计数器
success_count = 0
# 设定触发延迟的成功次数阈值
delay_threshold = 700
# 延迟时长(单位:秒)
delay_seconds = 10

for i in inGroups:
    tdn = "cn=" + i + ",cn=groups,dc=apple,dc=com"
    addToGroup = [
        (ldap.MOD_ADD, 'memberUid', userUID),
    ]
    try:
        lod.modify_s(tdn, addToGroup)
        print "added %s to group %s" % (userUID, i)
        # 成功添加后计数器加1
        success_count += 1
        # 判断是否达到延迟触发条件
        if success_count >= delay_threshold:
            print "已成功添加%s次,开始延迟%s秒..." % (success_count, delay_seconds)
            time.sleep(delay_seconds)
            # 重置计数器,进入下一轮计数
            success_count = 0
    except ldap.LDAPError, e:
        print "Fatal Error."
        if type(e.message) == dict:
            for (k, v) in e.message.iteritems():
                print "%s: %s\n" % (k, v)
        else:
            print "Error: %s\n" % e.message
        print addToGroup

之前的错误分析

  • if i>700:i是遍历的组标识(如组名),并非成功添加的次数,逻辑完全不匹配需求
  • addToGroup.count(10):addToGroup是LDAP修改操作的列表,元素为(ldap.MOD_ADD, 'memberUid', userUID),不存在数值10,count(10)永远返回0,不可能触发延迟

内容的提问来源于stack exchange,提问作者Misrty vib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:15:36