Потоки с Jira-Python время от времени приводят к ошибке 401 - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь запросить и затем отобразить большое количество билетов 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 ошибку в больших списках, но нев небольших списках?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...