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

broker_bumpz
Tyler Goodlet 2022-02-22 15:20:13 -05:00
parent 310a17e93b
commit d2d3286fb8
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) contract, ticker, details = await self.get_sym_details(symbol)
ready = ticker.updateEvent
# ensure a last price gets filled in before we deliver quote # ensure a last price gets filled in before we deliver quote
for _ in range(100): for _ in range(100):
if isnan(ticker.last): if isnan(ticker.last):
await asyncio.sleep(0.01)
log.warning(f'Quote for {symbol} timed out: market is closed?') done, pending = await asyncio.wait(
ticker = await ticker.updateEvent [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: else:
log.info(f'Got first quote for {symbol}') log.info(f'Got first quote for {symbol}')
break break