ohlc output uses orjson

This commit is contained in:
Tim
2024-02-21 15:33:37 -04:00
parent c5e9787880
commit e39d219743
4 changed files with 14 additions and 4 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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__)

View File

@@ -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):