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

如何利用Python-Redmine识别未启用问题追踪的Redmine项目以避免报错?

解决Redmine Python API跳过未启用问题追踪项目的问题

方案一:捕获异常跳过项目

直接在查询项目问题时捕获ForbiddenError,遇到该异常就跳过当前项目,继续统计其他项目:

from redminelib.exceptions import ForbiddenError

redmine = Redmine('https://redmine.server/redmine', key='1234567890987654321', requests={'verify': False})

projects = redmine.project.all()

for project in projects:
    issueCount = 0
    try:
        # 尝试查询项目所有问题
        issues = redmine.issue.filter(project_id=project.identifier, status_id='*')
        issueCount = len(issues)  # 直接用len()替代循环计数更高效
        print(f'Project {project.identifier} has {issueCount} issues')
    except ForbiddenError:
        # 捕获无权限/未启用问题追踪的异常,跳过该项目
        print(f'Project {project.identifier} has no issue tracking enabled, skipped')

方案二:提前检查项目启用模块

通过Redmine项目的enabled_modules属性,提前判断是否开启了问题追踪模块,避免发起无效请求:

redmine = Redmine('https://redmine.server/redmine', key='1234567890987654321', requests={'verify': False})

projects = redmine.project.all()

for project in projects:
    # 获取项目启用的模块列表
    enabled_modules = [module.name for module in project.enabled_modules]
    if 'issue_tracking' not in enabled_modules:
        print(f'Project {project.identifier} has no issue tracking enabled, skipped')
        continue
    
    # 统计已启用问题追踪项目的问题数量
    issues = redmine.issue.filter(project_id=project.identifier, status_id='*')
    issueCount = len(issues)
    print(f'Project {project.identifier} has {issueCount} issues')

说明

  • 方案一简单直接,适合快速修改代码;方案二更高效,减少不必要的API请求。
  • 用len(issues)替代循环计数,能大幅提升统计效率,因为Python-Redmine的filter返回的集合支持直接取长度。

内容的提问来源于stack exchange,提问作者Mister Rose

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:05:12