Pass DB session into the inspector

This commit is contained in:
Luke Van Seters 2021-11-09 10:49:08 -05:00
parent c94b2523c1
commit e0d6919039
2 changed files with 21 additions and 6 deletions

18
cli.py
View File

@ -5,6 +5,7 @@ from functools import wraps
import click import click
from mev_inspect.db import get_inspect_session, get_trace_session
from mev_inspect.inspector import MEVInspector from mev_inspect.inspector import MEVInspector
RPC_URL_ENV = "RPC_URL" RPC_URL_ENV = "RPC_URL"
@ -39,7 +40,10 @@ def coro(f):
@click.option("--rpc", default=lambda: os.environ.get(RPC_URL_ENV, "")) @click.option("--rpc", default=lambda: os.environ.get(RPC_URL_ENV, ""))
@coro @coro
async def inspect_block_command(block_number: int, rpc: str): async def inspect_block_command(block_number: int, rpc: str):
inspector = MEVInspector(rpc=rpc) inspect_db_session = get_inspect_session()
trace_db_session = get_trace_session()
inspector = MEVInspector(rpc, inspect_db_session, trace_db_session)
await inspector.inspect_single_block(block=block_number) await inspector.inspect_single_block(block=block_number)
@ -48,7 +52,10 @@ async def inspect_block_command(block_number: int, rpc: str):
@click.option("--rpc", default=lambda: os.environ.get(RPC_URL_ENV, "")) @click.option("--rpc", default=lambda: os.environ.get(RPC_URL_ENV, ""))
@coro @coro
async def fetch_block_command(block_number: int, rpc: str): async def fetch_block_command(block_number: int, rpc: str):
inspector = MEVInspector(rpc=rpc) inspect_db_session = get_inspect_session()
trace_db_session = get_trace_session()
inspector = MEVInspector(rpc, inspect_db_session, trace_db_session)
block = await inspector.create_from_block(block_number=block_number) block = await inspector.create_from_block(block_number=block_number)
print(block.json()) print(block.json())
@ -74,8 +81,13 @@ async def inspect_many_blocks_command(
max_concurrency: int, max_concurrency: int,
request_timeout: int, request_timeout: int,
): ):
inspect_db_session = get_inspect_session()
trace_db_session = get_trace_session()
inspector = MEVInspector( inspector = MEVInspector(
rpc=rpc, rpc,
inspect_db_session,
trace_db_session,
max_concurrency=max_concurrency, max_concurrency=max_concurrency,
request_timeout=request_timeout, request_timeout=request_timeout,
) )

View File

@ -3,13 +3,14 @@ import logging
import sys import sys
import traceback import traceback
from asyncio import CancelledError from asyncio import CancelledError
from typing import Optional
from sqlalchemy import orm
from web3 import Web3 from web3 import Web3
from web3.eth import AsyncEth from web3.eth import AsyncEth
from mev_inspect.block import create_from_block_number from mev_inspect.block import create_from_block_number
from mev_inspect.classifiers.trace import TraceClassifier from mev_inspect.classifiers.trace import TraceClassifier
from mev_inspect.db import get_inspect_session, get_trace_session
from mev_inspect.inspect_block import inspect_block from mev_inspect.inspect_block import inspect_block
from mev_inspect.provider import get_base_provider from mev_inspect.provider import get_base_provider
@ -21,11 +22,13 @@ class MEVInspector:
def __init__( def __init__(
self, self,
rpc: str, rpc: str,
inspect_db_session: orm.Session,
trace_db_session: Optional[orm.Session],
max_concurrency: int = 1, max_concurrency: int = 1,
request_timeout: int = 300, request_timeout: int = 300,
): ):
self.inspect_db_session = get_inspect_session() self.inspect_db_session = inspect_db_session
self.trace_db_session = get_trace_session() self.trace_db_session = trace_db_session
self.base_provider = get_base_provider(rpc, request_timeout=request_timeout) self.base_provider = get_base_provider(rpc, request_timeout=request_timeout)
self.w3 = Web3(self.base_provider, modules={"eth": (AsyncEth,)}, middlewares=[]) self.w3 = Web3(self.base_provider, modules={"eth": (AsyncEth,)}, middlewares=[])
self.trace_classifier = TraceClassifier() self.trace_classifier = TraceClassifier()