mv/fundamentus-api

Carregamento de lista de papéis lento

GustavoOS opened this issue · 1 comments

Ao fazer uma consulta a uma lista de papéis, são feitas múltiplas requisições de maneira sequencial, o que demora, dependendo da lista.

Sugestão: utilizar a API threadpoolexecutor para fazer as requisições em paralelo, otimizando o tempo de busca. Essa alternativa seria substitutiva ao atual processo que utiliza a iteração usando for.

@mv sugestão de fix, é na detalhes.py:

from concurrent.futures import ThreadPoolExecutor

def get_detalhes_list(lst):
    """
    Get detailed data for a given list

    Input: list
    Output: DataFrame
    """

    with ThreadPoolExecutor() as executor:
        result = executor.map(get_papel, lst)
    result = pd.concat(result)

    # duplicate column (papel is the index already)
    try:
        result.drop('Papel', axis='columns', inplace=True)
    except: # pragma: no cover
        logging.error('drop column. Error=[{}].'.format(sys.exc_info()[1]))

    return result.sort_index()