First draft storage layer cli

Adds a `piker storage` subcmd with a `-d` flag to wipe a particular
fqsn's time series (both 1s and 60s). Obviously this needs to be
extended much more but provides a start point.
storage_cli
Tyler Goodlet 2023-01-29 15:17:39 -05:00
parent 4379bfe760
commit 58f39d1829
2 changed files with 73 additions and 23 deletions

View File

@ -19,7 +19,10 @@ marketstore cli.
""" """
from functools import partial from functools import partial
from pprint import pformat from pprint import (
pformat,
pprint,
)
from anyio_marketstore import open_marketstore_client from anyio_marketstore import open_marketstore_client
import trio import trio
@ -113,15 +116,11 @@ def ms_stream(
@cli.command() @cli.command()
@click.option( @click.option(
'--tl', '--tsdb_host',
is_flag=True,
help='Enable tractor logging')
@click.option(
'--host',
default='localhost' default='localhost'
) )
@click.option( @click.option(
'--port', '--tsdb_port',
default=5993 default=5993
) )
@click.argument('symbols', nargs=-1) @click.argument('symbols', nargs=-1)
@ -137,7 +136,7 @@ def storesh(
Start an IPython shell ready to query the local marketstore db. Start an IPython shell ready to query the local marketstore db.
''' '''
from piker.data.marketstore import tsdb_history_update from piker.data.marketstore import open_tsdb_client
from piker._daemon import open_piker_runtime from piker._daemon import open_piker_runtime
async def main(): async def main():
@ -148,7 +147,63 @@ def storesh(
enable_modules=['piker.data._ahab'], enable_modules=['piker.data._ahab'],
): ):
symbol = symbols[0] symbol = symbols[0]
await tsdb_history_update(symbol)
async with open_tsdb_client(symbol) as storage:
# TODO: ask if user wants to write history for detected
# available shm buffers?
from tractor.trionics import ipython_embed
await ipython_embed()
trio.run(main)
@cli.command()
@click.option(
'--host',
default='localhost'
)
@click.option(
'--port',
default=5993
)
@click.option(
'--delete',
'-d',
is_flag=True,
help='Delete history (1 Min) for symbol(s)',
)
@click.argument('symbols', nargs=-1)
@click.pass_obj
def storage(
config,
host,
port,
symbols: list[str],
delete: bool,
):
'''
Start an IPython shell ready to query the local marketstore db.
'''
from piker.data.marketstore import open_tsdb_client
from piker._daemon import open_piker_runtime
async def main():
nonlocal symbols
async with open_piker_runtime(
'tsdb_storage',
enable_modules=['piker.data._ahab'],
):
symbol = symbols[0]
async with open_tsdb_client(symbol) as storage:
if delete:
for fqsn in symbols:
syms = await storage.client.list_symbols()
breakpoint()
await storage.delete_ts(fqsn, 60)
await storage.delete_ts(fqsn, 1)
trio.run(main) trio.run(main)

View File

@ -510,7 +510,6 @@ class Storage:
client = self.client client = self.client
syms = await client.list_symbols() syms = await client.list_symbols()
print(syms)
if key not in syms: if key not in syms:
raise KeyError(f'`{key}` table key not found in\n{syms}?') raise KeyError(f'`{key}` table key not found in\n{syms}?')
@ -627,10 +626,10 @@ async def open_storage_client(
yield Storage(client) yield Storage(client)
async def tsdb_history_update( @acm
fqsn: Optional[str] = None, async def open_tsdb_client(
fqsn: str,
) -> list[str]: ) -> Storage:
# TODO: real-time dedicated task for ensuring # TODO: real-time dedicated task for ensuring
# history consistency between the tsdb, shm and real-time feed.. # history consistency between the tsdb, shm and real-time feed..
@ -659,7 +658,7 @@ async def tsdb_history_update(
# - https://github.com/pikers/piker/issues/98 # - https://github.com/pikers/piker/issues/98
# #
profiler = Profiler( profiler = Profiler(
disabled=False, # not pg_profile_enabled(), disabled=True, # not pg_profile_enabled(),
delayed=False, delayed=False,
) )
@ -701,13 +700,9 @@ async def tsdb_history_update(
# profiler('Finished db arrays diffs') # profiler('Finished db arrays diffs')
syms = await storage.client.list_symbols() syms = await storage.client.list_symbols()
log.info(f'Existing tsdb symbol set:\n{pformat(syms)}') # log.info(f'Existing tsdb symbol set:\n{pformat(syms)}')
profiler(f'listed symbols {syms}') # profiler(f'listed symbols {syms}')
yield storage
# TODO: ask if user wants to write history for detected
# available shm buffers?
from tractor.trionics import ipython_embed
await ipython_embed()
# for array in [to_append, to_prepend]: # for array in [to_append, to_prepend]:
# if array is None: # if array is None: