ohlc output uses orjson
This commit is contained in:
@@ -50,7 +50,7 @@ async def main():
|
|||||||
if config.ohlc_dir is None:
|
if config.ohlc_dir is None:
|
||||||
fatal('an ohlc_dir must be configured')
|
fatal('an ohlc_dir must be configured')
|
||||||
await blockchain.connect()
|
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,
|
walker.add_event_trigger(handle_backfill_uniswap_swaps,
|
||||||
get_contract_event('IUniswapV3PoolEvents', 'Swap'), multi=True)
|
get_contract_event('IUniswapV3PoolEvents', 'Swap'), multi=True)
|
||||||
await walker.run()
|
await walker.run()
|
||||||
|
|||||||
@@ -29,4 +29,4 @@ class Config:
|
|||||||
deployments: Optional[dict[str,str]] = field(default_factory=dict)
|
deployments: Optional[dict[str,str]] = field(default_factory=dict)
|
||||||
min_gas: str = '0'
|
min_gas: str = '0'
|
||||||
|
|
||||||
tokens_dir: str = '.'
|
walker_flush_interval: float = 300
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import json
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from datetime import datetime, timedelta, timezone
|
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 import BlockDict, DiffItem, current_blockstate
|
||||||
from dexorder.blockstate.diff import DiffEntryItem
|
from dexorder.blockstate.diff import DiffEntryItem
|
||||||
from dexorder.database.model import Block
|
from dexorder.database.model import Block
|
||||||
|
from dexorder.util import json
|
||||||
from dexorder.util.shutdown import fatal
|
from dexorder.util.shutdown import fatal
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -23,11 +23,21 @@ def _serialize(v):
|
|||||||
raise TypeError
|
raise TypeError
|
||||||
|
|
||||||
|
|
||||||
|
def load(file) -> Any:
|
||||||
|
return loads(file.read())
|
||||||
|
|
||||||
def loads(s):
|
def loads(s):
|
||||||
return orjson.loads(s)
|
return orjson.loads(s)
|
||||||
|
|
||||||
|
def dump(obj, file):
|
||||||
|
file.write(dumps(obj))
|
||||||
|
|
||||||
def 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):
|
class JsonEncoder (JSONEncoder):
|
||||||
|
|||||||
Reference in New Issue
Block a user