Я пытаюсь запросить и затем отобразить большое количество билетов JIRA с использованием Jira-Python.
Вместо того, чтобы запрашивать отдельные билеты по одному, я создаю поток для каждого билета, который я хочу получитьРезультаты, сохраняя все результаты в списке, затем, после того, как все результаты представлены, отображая результаты в таблице.
Это прекрасно работает для запросов менее чем около 200 заявок, но на любую сумму, превышающую эту.и я начинаю получать ошибки 401 только в некоторых потоках, в то время как другие проходят нормально.
У меня нет проблем с данными для входа и получением небольших списков заявок.
Вот что я делаю в основной теме после входа в систему:
jiraTicketLists = self.chunks(self.jiraQueryData, listSize) #Split full list into smaller lists to run in each thread
for jiraTicketList in jiraTicketLists:
t = threading.Thread(target=jiraFunctions.queryJiraTicket, args=(jiraTicketList, self.jiraFieldList, self))
t.start()
и в созданной теме:
def queryJiraTicket(ticketNumberList, attributeList, parent):
for ticketNumber in ticketNumberList:
try:
issue = JIRA.issue(ticketNumber, expand='changelog')
jiraDict = {}
for attribute in attributeList:
jiraAttr = ""
if attribute == "Summary":
jiraAttr = issue.fields.summary
elif attribute == "Description":
jiraAttr = issue.fields.description
elif attribute == "Assignee":
try:
jiraAttr = issue.fields.assignee.name
except:
jiraAttr = "Unassigned"
elif attribute == "Status":
jiraAttr = issue.fields.status
elif attribute == "Priority":
jiraAttr = issue.fields.priority
elif attribute == "Type":
jiraAttr = issue.fields.issuetype
elif attribute == "Labels":
jiraAttr = issue.fields.labels
elif attribute == "Comments":
jiraAttr = [comment["body"] for comment in issue.raw['fields']['comment']['comments']]
elif attribute == "Ticket Number":
jiraAttr = issue
elif attribute == "Transitions":
jiraAttr = JIRA.transitions(issue)
elif attribute == "Changelog":
changelog = issue.changelog
historyList = []
for history in changelog.histories:
for item in history.items:
historyList.append(history.created)
historyList.sort()
jiraAttr = historyList
jiraDict[attribute] = jiraAttr
if parent != None:
#Update UI with new ticket data
parent.ticketList.append(jiraDict)
parent.ticketNum = parent.ticketNum + 1
parent.updateProgressBarSignal.emit()
if parent.ticketNum == parent.numberOfTickets:
parent.getJiraTicketData()
except jira.JIRAError as e:
print e.status_code, e.text
Любая идея, почему я получаю 401 ошибку в больших списках, но нев небольших списках?