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..BDincr_update_backup
parent
e8aaf42cc6
commit
468cd3a381
|
@ -146,13 +146,21 @@ async def broadcast(
|
|||
# a given sample period.
|
||||
subs = sampler.subscribers.get(delay_s, ())
|
||||
|
||||
last = -1
|
||||
|
||||
if shm is None:
|
||||
lowest = min(sampler.ohlcv_shms.keys())
|
||||
shm = sampler.ohlcv_shms[lowest][0]
|
||||
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]
|
||||
last = shm._last.value
|
||||
|
||||
for stream in subs:
|
||||
try:
|
||||
await stream.send({'index': shm._last.value})
|
||||
await stream.send({'index': last})
|
||||
except (
|
||||
trio.BrokenResourceError,
|
||||
trio.ClosedResourceError
|
||||
|
|
Loading…
Reference in New Issue