binance: raise `NoData` on null hist arrays

Like we do with other history backends to indicate lack of a data set.
This avoids any raise that will will bring down the backloader task with
some downstream error.

Raise a `ValueError` on no time index for now.
nix-headless-fix
Tyler Goodlet 2024-06-11 10:28:56 -04:00
parent b7883325a9
commit 19c343e8b2
1 changed files with 13 additions and 6 deletions

View File

@ -48,6 +48,7 @@ import tractor
from piker.brokers import (
open_cached_client,
NoData,
)
from piker._cacheables import (
async_lifo_cache,
@ -254,22 +255,28 @@ async def open_history_client(
# NOTE: always query using their native symbology!
mktid: str = mkt.bs_mktid
array = await client.bars(
array: np.ndarray = await client.bars(
mktid,
start_dt=start_dt,
end_dt=end_dt,
)
if array.size == 0:
raise NoData('No frame for {start_dt} -> {end_dt}\n')
times = array['time']
if (
end_dt is None
):
inow = round(time.time())
if not times.any():
raise ValueError(
'Bad frame with null-times?\n\n'
f'{times}'
)
if end_dt is None:
inow: int = round(time.time())
if (inow - times[-1]) > 60:
await tractor.pause()
start_dt = from_timestamp(times[0])
end_dt = from_timestamp(times[-1])
return array, start_dt, end_dt
yield get_ohlc, {'erlangs': 3, 'rate': 3}