pyEX/stocks.py
def bulkBatch(symbols, fields=None, range_='1m', last=10, token='', version=''):
    '''Optimized batch to fetch as much as possible at once

    https://iexcloud.io/docs/api/#batch-requests


    Args:
        symbols (list); List of tickers to request
        fields (list); List of fields to request
        range_ (string); Date range for chart
        last (int);
        token (string); Access token
        version (string); API version

    Returns:
        dict: results in json
    '''
    fields = fields or _BATCH_TYPES
    args = []
    empty_data = []
    list_orig = empty_data.__class__

    if not isinstance(symbols, list_orig):
        raise PyEXception('Symbols must be of type list')

    for i in range(0, len(symbols), 99):
        args.append((symbols[i:i+99], fields, range_, last, token, version))

    pool = ThreadPool(20)
    rets = pool.starmap(batch, args)
    pool.close()

    ret = {}

    for i, d in enumerate(rets):
        symbols_subset = args[i][0]
        if len(d) != len(symbols_subset):
            empty_data.extend(list_orig(set(symbols_subset) - set(d.keys())))
        ret.update(d)

    for k in empty_data:
        if k not in ret:
            if isinstance(fields, str):
                ret[k] = {}
            else:
                ret[k] = {x: {} for x in fields}
    return ret
def bulkBatch(symbols, fields=None, range_='1m', last=10, token='', version=''):
    '''Optimized batch to fetch as much as possible at once

    https://iexcloud.io/docs/api/#batch-requests


    Args:
        symbols (list); List of tickers to request
        fields (list); List of fields to request
        range_ (string); Date range for chart
        last (int);
        token (string); Access token
        version (string); API version

    Returns:
        dict: results in json
    '''
    fields = fields or _BATCH_TYPES
    args = []
    empty_data = []
    list_orig = empty_data.__class__

    if not isinstance(symbols, list_orig):
        raise PyEXception('Symbols must be of type list')

    for i in range(0, len(symbols), 99):
        args.append((symbols[i:i+99], fields, range_, last, token, version))

    pool = ThreadPool(20)
    rets = pool.starmap(batch, args)
    pool.close()

    ret = {}

    for i, d in enumerate(rets):
        symbols_subset = args[i][0]
        if len(d) != len(symbols_subset):
            empty_data.extend(list_orig(set(symbols_subset) - set(d.keys())))
        ret.update(d)

    for k in empty_data:
        if k not in ret:
            if isinstance(fields, str):
                ret[k] = {}
            else:
                ret[k] = {x: {} for x in fields}
    return ret
def bulkBatch ( symbols , fields = None , range_ = '1m' , last = 10 , token = '' , version = '' ) : fields = fields or _BATCH_TYPES args = [ ] empty_data = [ ] list_orig = empty_data . __class__ if not isinstance ( symbols , list_orig ) : raise PyEXception ( 'Symbols must be of type list' ) for i in range ( 0 , len ( symbols ) , 99 ) : args . append ( ( symbols [ i : i + 99 ] , fields , range_ , last , token , version ) ) pool = ThreadPool ( 20 ) rets = pool . starmap ( batch , args ) pool . close ( ) ret = { } for i , d in enumerate ( rets ) : symbols_subset = args [ i ] [ 0 ] if len ( d ) != len ( symbols_subset ) : empty_data . extend ( list_orig ( set ( symbols_subset ) - set ( d . keys ( ) ) ) ) ret . update ( d ) for k in empty_data : if k not in ret : if isinstance ( fields , str ) : ret [ k ] = { } else : ret [ k ] = { x : { } for x in fields } return ret
Optimized batch to fetch as much as possible at once

    https://iexcloud.io/docs/api/#batch-requests


    Args:
        symbols (list); List of tickers to request
        fields (list); List of fields to request
        range_ (string); Date range for chart
        last (int);
        token (string); Access token
        version (string); API version

    Returns:
        dict: results in json
Optimized batch to fetch as much as possible at once