ohlc output uses orjson
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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__)
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user