Получите информацию рабочих журналов от проблем проекта - PullRequest
0 голосов
/ 11 декабря 2018

Привет всем и извините за мой английский!

Мне нужна ваша помощь в этом вопросе: у меня есть список вопросов (среди них эпопеи, задания, истории, подзадачи и т. Д.)Определенным образом я отфильтровал идентификаторы такой информации и поместил их в список:

listOfKeys = [id1,id2,id3,id4,id5...]

Затем мне нужно получить такую ​​таблицу (данные в которой будут строиться по проблемам, которые есть в спискеOfKeys) как на скриншоте: см. мой скриншот

Для этого я написал такой "код":

listOfWorklogs=pd.DataFrame()                #table from the screenshot (I used pandas (pd) lib)
lst={}                                       #dictionary for help, where the worklogs will be stored
for i in range(len(listOfKeys)):
    worklogs=jira.worklogs(listOfKeys[i])    #getting list of worklogs
    if(len(worklogs)) == 0:
        i+=1
    else:
        for j in range(len(worklogs)):
            lst = {
                    'self': worklogs[j].self,  
                    'author': worklogs[j].author,
                    'started': worklogs[j].started,
                    'created': worklogs[j].created,
                    'updated': worklogs[j].updated,
                    'timespent': worklogs[j].timeSpentSeconds
                }
            listOfWorklogs = listOfWorklogs.append(lst, ignore_index=True)
########### Below there is the recording to the .xlsx file ################

Но он работает очень медленно, даже для 100 проблем(около 3 минут).А у меня около 10000 вопросов (((Возможно, есть какой-то обходной путь? Буду рад любому совету, спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Я сделал ваш код немного более питоническим, он может быть немного быстрее при использовании итераторов:

  list_of_keys = [
      id1, id2, id3, id4, id5
  ]

  resulting_logs = [] 
  for worklog_key in list_of_keys:
      worklogs = jira.worklogs(worklog_key)

      for log in worklogs:
          resulting_logs.append({
              'self': log.self,
              'author': log.author,
              'started': log.started,
              'created': log.created,
              'updated': log.updated,
              'timespent': log.timeSpentSeconds
          })

  df = pd.DataFrame(resulting_logs)

Вы также можете быть ограничены временем ответа API jira.

Однако вы можете попробовать использовать понимание списка, но пока не проверяли:

  list_of_keys = [
      id1, id2, id3, id4, id5
  ]

  def parse_log(log):
      return {
          'self': log.self,
          'author': log.author,
          'started': log.started,
          'created': log.created,
          'updated': log.updated,
          'timespent': log.timeSpentSeconds
      }


  resulting_logs = [
      parse_log(log)
      for log in jira.worklogs(key)                                                                          
      for key in list_of_keys
  ]

  df = pd.DataFrame(resulting_logs)

...