Populate prices using the listener
This commit is contained in:
parent
b113b6c82e
commit
d5eaeaf00d
21
listener.py
21
listener.py
@ -10,9 +10,11 @@ from mev_inspect.crud.latest_block_update import (
|
|||||||
find_latest_block_update,
|
find_latest_block_update,
|
||||||
update_latest_block,
|
update_latest_block,
|
||||||
)
|
)
|
||||||
|
from mev_inspect.crud.prices import write_prices
|
||||||
from mev_inspect.crud.summary import update_summary_for_block
|
from mev_inspect.crud.summary import update_summary_for_block
|
||||||
from mev_inspect.db import get_inspect_session, get_trace_session
|
from mev_inspect.db import get_inspect_session, get_trace_session
|
||||||
from mev_inspect.inspector import MEVInspector
|
from mev_inspect.inspector import MEVInspector
|
||||||
|
from mev_inspect.prices import fetch_all_supported_prices
|
||||||
from mev_inspect.provider import get_base_provider
|
from mev_inspect.provider import get_base_provider
|
||||||
from mev_inspect.signal_handler import GracefulKiller
|
from mev_inspect.signal_handler import GracefulKiller
|
||||||
|
|
||||||
@ -22,6 +24,9 @@ logger = logging.getLogger(__name__)
|
|||||||
# lag to make sure the blocks we see are settled
|
# lag to make sure the blocks we see are settled
|
||||||
BLOCK_NUMBER_LAG = 5
|
BLOCK_NUMBER_LAG = 5
|
||||||
|
|
||||||
|
# how often to update prices
|
||||||
|
UPDATE_PRICES_EVERY_N_BLOCKS = 300
|
||||||
|
|
||||||
|
|
||||||
@coro
|
@coro
|
||||||
async def run():
|
async def run():
|
||||||
@ -63,6 +68,8 @@ async def inspect_next_block(
|
|||||||
latest_block_number = await get_latest_block_number(base_provider)
|
latest_block_number = await get_latest_block_number(base_provider)
|
||||||
last_written_block = find_latest_block_update(inspect_db_session)
|
last_written_block = find_latest_block_update(inspect_db_session)
|
||||||
|
|
||||||
|
blocks_written = 0
|
||||||
|
|
||||||
logger.info(f"Latest block: {latest_block_number}")
|
logger.info(f"Latest block: {latest_block_number}")
|
||||||
logger.info(f"Last written block: {last_written_block}")
|
logger.info(f"Last written block: {last_written_block}")
|
||||||
|
|
||||||
@ -82,10 +89,16 @@ async def inspect_next_block(
|
|||||||
)
|
)
|
||||||
|
|
||||||
update_summary_for_block(inspect_db_session, block_number)
|
update_summary_for_block(inspect_db_session, block_number)
|
||||||
|
|
||||||
|
if (blocks_written % UPDATE_PRICES_EVERY_N_BLOCKS) == 0:
|
||||||
|
await _refresh_prices(inspect_db_session)
|
||||||
|
|
||||||
update_latest_block(inspect_db_session, block_number)
|
update_latest_block(inspect_db_session, block_number)
|
||||||
|
|
||||||
if healthcheck_url:
|
if healthcheck_url:
|
||||||
await ping_healthcheck_url(healthcheck_url)
|
await ping_healthcheck_url(healthcheck_url)
|
||||||
|
|
||||||
|
blocks_written += 1
|
||||||
else:
|
else:
|
||||||
await asyncio.sleep(5)
|
await asyncio.sleep(5)
|
||||||
|
|
||||||
@ -96,6 +109,14 @@ async def ping_healthcheck_url(url):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
async def _refresh_prices(inspect_db_session) -> None:
|
||||||
|
logger.info("Fetching prices")
|
||||||
|
prices = await fetch_all_supported_prices()
|
||||||
|
|
||||||
|
logger.info("Writing prices")
|
||||||
|
write_prices(inspect_db_session, prices)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
try:
|
||||||
run()
|
run()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user