Use `asyncio` in `Client.get_quote()`

mkts_backup
Tyler Goodlet 2022-02-22 15:20:13 -05:00
parent 88411a6a26
commit 6e37ab6bf9
1 changed files with 15 additions and 3 deletions

View File

@ -516,12 +516,24 @@ class Client:
'''
contract, ticker, details = await self.get_sym_details(symbol)
ready = ticker.updateEvent
# ensure a last price gets filled in before we deliver quote
for _ in range(100):
if isnan(ticker.last):
await asyncio.sleep(0.01)
log.warning(f'Quote for {symbol} timed out: market is closed?')
ticker = await ticker.updateEvent
done, pending = await asyncio.wait(
[ready],
timeout=0.1,
)
if ready in done:
break
else:
log.warning(
f'Quote for {symbol} timed out: market is closed?'
)
# ticker = await ticker.updateEvent
else:
log.info(f'Got first quote for {symbol}')
break