我正在尝试获取与项目相关的所有问题。当我执行下面的代码时,我只得到 50 个结果。我需要浏览所有页面并找出所有错误。请帮助
all_issues = jira.search_issues('project=ProjectName')
each_issue = sorted([issue.key for issue in all_issues])
for item in each_issue:
print item
这只给我 50 个问题,因为页面的默认值为 50。我需要得到所有的问题。
-- 2021 年 10 月 18 日更新
正如在下面的answer中所发现的那样,将 maxResults 设置为 False 似乎可以消除对结果集的限制。
all_issues = jira.search_issues('project=ProjectName', maxResults=False)
-- 原帖
尝试;
all_issues = jira.search_issues('project=ProjectName', maxResults=50, startAt=50)
来自 REST API 的结果是分页的,默认结果数为 50。您可以提供
startAt
值以从结果集中的一个点开始结果。默认情况下,此值为 0.
因此,您的原始查询将获得结果 0-49,上面的查询将获得结果 50-99,将
startAt
更改为 100 将获得 100-149,依此类推。
您还可以增加
maxResults
的值以每页返回更多结果。但是,这仅限于在您的 JIRA 实例中配置的 jira.search.views.default.max
的最大值(默认设置为 1000)。
没有分页,是不可能让API返回所有issue的。您必须将
jira.search.views.default.max
配置为一个非常大的值,并将该值作为 maxResults
. 提供
Setting
maxResults=False
应该可以解决问题,因此您的示例如下所示:
all_issues = jira.search_issues('project=ProjectName', maxResults=False)
each_issue = sorted([issue.key for issue in all_issues])
for item in each_issue:
print item
我现在对它进行了简短的测试,它在这里工作。
我喜欢 André Düwel 对合理结果集的回答。
以防万一返回的问题总数太大而无法处理,或者如果您想以更合理的块处理结果,这是我使用的
fetch
:
def fetch_jql(jc, jql, limit=0, page_size=50, fields=None, expand=None):
""" fetches a list of JIRA.issues found in the JQL. Handles JIRA pagination
:param jc: jira_client
:param jql: query to search for
:param limit: max results to find, 0 finds all
:param page_size: jira pagination setting (max=100, def=50)
:param fields: fields to search for, if None then get everything
:param expand: usually just the changelog, if None get everything
:return: list of issues as JIRA Resources
"""
if limit != 0 and limit < page_size:
page_size = limit
response = list()
index = 0
while True:
issues = jc.search_issues(jql, startAt=index, maxResults=page_size, fields=fields, expand=expand)
if len(issues) == 0:
break
index += len(issues)
response += issues
if limit != 0 and limit <= index:
break
return response