Drop contracts cache; that wasn't the bottleneck

This also fixes a bug where option subscriptions weren't actually being
changed when a new call was made..
kivy_mainline_and_py3.8
Tyler Goodlet 2018-12-16 23:52:10 -05:00
parent 3fd01c42f2
commit 5af90c044f
1 changed files with 4 additions and 9 deletions
piker/brokers

View File

@ -5,7 +5,6 @@ import time
from datetime import datetime from datetime import datetime
from functools import partial from functools import partial
import configparser import configparser
from operator import itemgetter
from typing import List, Tuple, Dict, Any, Iterator, NamedTuple from typing import List, Tuple, Dict, Any, Iterator, NamedTuple
import trio import trio
@ -418,9 +417,8 @@ async def get_client() -> Client:
log.debug("Check time to ensure access token is valid") log.debug("Check time to ensure access token is valid")
try: try:
# await client.api.time() # await client.api.time()
quote = await client.quote(['RY.TO']) await client.quote(['RY.TO'])
except Exception as err: except Exception:
# import pdb; pdb.set_trace()
# access token is likely no good # access token is likely no good
log.warn(f"Access token {client.access_data['access_token']} seems" log.warn(f"Access token {client.access_data['access_token']} seems"
f" expired, forcing refresh") f" expired, forcing refresh")
@ -501,18 +499,15 @@ async def option_quoter(client: Client, tickers: List[str]):
@async_lifo_cache(maxsize=128) @async_lifo_cache(maxsize=128)
async def get_contract_by_date( async def get_contract_by_date(
sym_date_pairs: Tuple[Tuple[str, str]], sym_date_pairs: Tuple[Tuple[str, str]],
_contract_cache: dict = {}
): ):
"""For each tuple, """For each tuple,
``(symbol_date_1, symbol_date_2, ... , symbol_date_n)`` ``(symbol_date_1, symbol_date_2, ... , symbol_date_n)``
return a contract dict. return a contract dict.
""" """
symbols, dates = zip(*sym_date_pairs) symbols, dates = zip(*sym_date_pairs)
if not _contract_cache: contracts = await client.get_all_contracts(symbols)
contracts = await client.get_all_contracts(symbols)
_contract_cache.update(contracts)
selected = {} selected = {}
for key, val in _contract_cache.items(): for key, val in contracts.items():
if key.expiry in dates: if key.expiry in dates:
selected[key] = val selected[key] = val