Handle no sampler subs case on history broadcasts
When the market isn't open the feed layer won't create a subscriber entry in the sampler broadcast loop and so if a manual call to ``broadcast()`` is made (like when trying to update a chart from a history prepend) we need to handle that case and just broadcast a random `-1` for now..BDl1_precision_fix
parent
b44786e5b7
commit
9b5f052597
|
@ -146,13 +146,21 @@ async def broadcast(
|
||||||
# a given sample period.
|
# a given sample period.
|
||||||
subs = sampler.subscribers.get(delay_s, ())
|
subs = sampler.subscribers.get(delay_s, ())
|
||||||
|
|
||||||
|
last = -1
|
||||||
|
|
||||||
if shm is None:
|
if shm is None:
|
||||||
lowest = min(sampler.ohlcv_shms.keys())
|
periods = sampler.ohlcv_shms.keys()
|
||||||
|
# if this is an update triggered by a history update there
|
||||||
|
# might not actually be any sampling bus setup since there's
|
||||||
|
# no "live feed" active yet.
|
||||||
|
if periods:
|
||||||
|
lowest = min(periods)
|
||||||
shm = sampler.ohlcv_shms[lowest][0]
|
shm = sampler.ohlcv_shms[lowest][0]
|
||||||
|
last = shm._last.value
|
||||||
|
|
||||||
for stream in subs:
|
for stream in subs:
|
||||||
try:
|
try:
|
||||||
await stream.send({'index': shm._last.value})
|
await stream.send({'index': last})
|
||||||
except (
|
except (
|
||||||
trio.BrokenResourceError,
|
trio.BrokenResourceError,
|
||||||
trio.ClosedResourceError
|
trio.ClosedResourceError
|
||||||
|
|
Loading…
Reference in New Issue