diff --git a/src/dexorder/bin/finaldata.py b/src/dexorder/bin/finaldata.py index be0271c..95a26af 100644 --- a/src/dexorder/bin/finaldata.py +++ b/src/dexorder/bin/finaldata.py @@ -50,7 +50,7 @@ async def main(): if config.ohlc_dir is None: fatal('an ohlc_dir must be configured') await blockchain.connect() - walker = BlockWalker(flush_callback, timedelta(minutes=5)) + walker = BlockWalker(flush_callback, timedelta(seconds=config.walker_flush_interval)) walker.add_event_trigger(handle_backfill_uniswap_swaps, get_contract_event('IUniswapV3PoolEvents', 'Swap'), multi=True) await walker.run() diff --git a/src/dexorder/configuration/schema.py b/src/dexorder/configuration/schema.py index 603dd3a..172d509 100644 --- a/src/dexorder/configuration/schema.py +++ b/src/dexorder/configuration/schema.py @@ -29,4 +29,4 @@ class Config: deployments: Optional[dict[str,str]] = field(default_factory=dict) min_gas: str = '0' - tokens_dir: str = '.' + walker_flush_interval: float = 300 diff --git a/src/dexorder/ohlc.py b/src/dexorder/ohlc.py index fc094e6..632e63c 100644 --- a/src/dexorder/ohlc.py +++ b/src/dexorder/ohlc.py @@ -1,4 +1,3 @@ -import json import logging import os from datetime import datetime, timedelta, timezone @@ -11,6 +10,7 @@ from dexorder.base.chain import current_chain from dexorder.blockstate import BlockDict, DiffItem, current_blockstate from dexorder.blockstate.diff import DiffEntryItem from dexorder.database.model import Block +from dexorder.util import json from dexorder.util.shutdown import fatal log = logging.getLogger(__name__) diff --git a/src/dexorder/util/json.py b/src/dexorder/util/json.py index d1895b0..fccfbdc 100644 --- a/src/dexorder/util/json.py +++ b/src/dexorder/util/json.py @@ -23,11 +23,21 @@ def _serialize(v): raise TypeError +def load(file) -> Any: + return loads(file.read()) + def loads(s): return orjson.loads(s) +def dump(obj, file): + file.write(dumps(obj)) + def dumps(obj): - return orjson.dumps(obj, default=_serialize, option=orjson.OPT_PASSTHROUGH_SUBCLASS).decode('utf8') + return dumpb(obj).decode('utf8') + +def dumpb(obj): + opts = orjson.OPT_PASSTHROUGH_SUBCLASS | orjson.OPT_STRICT_INTEGER + return orjson.dumps(obj, default=_serialize, option=opts) class JsonEncoder (JSONEncoder):