Есть ли более быстрый способ запроса данных из API REST? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь ускорить код ниже. На данный момент это занимает около 15 минут, чтобы бежать ....

Источник данных, к которому я обращаюсь, возвращает только 1000 строк на страницу, число строк неизвестно, поэтому я оставляю итеративные страницы для получения полного набора данных.

Я не уверен, почему это так медленно, источник данных работает на локальном сервере.

Любая помощь будет отличной!

def calcreadings (calc_elements_id, unit_of_time, length_of_data, size = 1000, page = 1): пытаться: # импортирует необходимые библиотеки запросы на импорт импорт панд как pd

    canary_server, access_token = config()
    calc_elements_id = str(calc_elements_id)
    length_of_data = str(length_of_data)
    unit_of_time = str(unit_of_time)
    # sets up the requeste to collect data from the API

    pages_check = page

    # loops over the pages in the api

    while pages_check > 0:
        request = requests.get(canary_server
                            + 'calcelements/' + calc_elements_id
                            + '/data/?'
                            + 'periodType=' + unit_of_time
                            + '&active=false'
                            + '&_size=' + str(size)
                            + '&_page=' + str(page)
                            + '&_sort= Id DESC'
                            + '&periodLength=' + str(length_of_data)
                            + '&access_token=' + access_token)

        calc_readings_check = pd.read_json(request.text)
        if len(calc_readings_check) != 0:
            if page == 1:
                # loads the data from the API in to Pandas Data Frame
                calc_readings = calc_readings_check
            else:
                # loads the data from the API in to Pandas Data Frame and appends
                calc_readings = calc_readings.append(calc_readings_check)
            page += 1
        else:
            pages_check = 0
    try:
        calc_readings['calc_elements_id'] = int(calc_elements_id)
    except NameError:
        calc_readings = ''
    return calc_readings
except:
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...