kopia lustrzana https://github.com/bugout-dev/moonworm
fixed sessions managing
rodzic
6c2915eeff
commit
0c42c889b7
|
|
@ -8,7 +8,7 @@ from typing import Any, Dict, List, Optional, cast
|
||||||
|
|
||||||
import web3
|
import web3
|
||||||
from eth_typing.evm import ChecksumAddress
|
from eth_typing.evm import ChecksumAddress
|
||||||
from moonstreamdb.db import yield_db_session_ctx
|
from moonstreamdb.db import SessionLocal
|
||||||
from moonstreamdb.models import PolygonLabel
|
from moonstreamdb.models import PolygonLabel
|
||||||
from sqlalchemy.orm import Query, Session
|
from sqlalchemy.orm import Query, Session
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
|
|
@ -31,7 +31,9 @@ def _get_last_crawled_block(contract_address: ChecksumAddress) -> Optional[int]:
|
||||||
"""
|
"""
|
||||||
Gets the last block that was crawled.
|
Gets the last block that was crawled.
|
||||||
"""
|
"""
|
||||||
with yield_db_session_ctx() as session:
|
session = SessionLocal()
|
||||||
|
result = None
|
||||||
|
try:
|
||||||
query = (
|
query = (
|
||||||
session.query(PolygonLabel)
|
session.query(PolygonLabel)
|
||||||
.filter(
|
.filter(
|
||||||
|
|
@ -41,8 +43,10 @@ def _get_last_crawled_block(contract_address: ChecksumAddress) -> Optional[int]:
|
||||||
.order_by(PolygonLabel.block_number.desc())
|
.order_by(PolygonLabel.block_number.desc())
|
||||||
)
|
)
|
||||||
if query.count():
|
if query.count():
|
||||||
return query.first().block_number
|
result = query.first().block_number
|
||||||
return None
|
finally:
|
||||||
|
session.close()
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _add_function_call_labels(
|
def _add_function_call_labels(
|
||||||
|
|
@ -51,7 +55,8 @@ def _add_function_call_labels(
|
||||||
"""
|
"""
|
||||||
Adds a label to a function call.
|
Adds a label to a function call.
|
||||||
"""
|
"""
|
||||||
with yield_db_session_ctx() as session:
|
session = SessionLocal()
|
||||||
|
try:
|
||||||
existing_function_call_labels = (
|
existing_function_call_labels = (
|
||||||
session.query(PolygonLabel)
|
session.query(PolygonLabel)
|
||||||
.filter(
|
.filter(
|
||||||
|
|
@ -105,13 +110,17 @@ def _add_function_call_labels(
|
||||||
except:
|
except:
|
||||||
logger.error(f"Failed!!!\n{e}")
|
logger.error(f"Failed!!!\n{e}")
|
||||||
session.rollback()
|
session.rollback()
|
||||||
|
finally:
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
def _add_event_labels(events: List[Dict[str, Any]]) -> None:
|
def _add_event_labels(events: List[Dict[str, Any]]) -> None:
|
||||||
"""
|
"""
|
||||||
Adds events to database.
|
Adds events to database.
|
||||||
"""
|
"""
|
||||||
with yield_db_session_ctx() as session:
|
session = SessionLocal()
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
transactions = [event["transactionHash"] for event in events]
|
transactions = [event["transactionHash"] for event in events]
|
||||||
|
|
||||||
|
|
@ -165,6 +174,8 @@ def _add_event_labels(events: List[Dict[str, Any]]) -> None:
|
||||||
except:
|
except:
|
||||||
logger.error(f"Failed!!!\n{e}")
|
logger.error(f"Failed!!!\n{e}")
|
||||||
session.rollback()
|
session.rollback()
|
||||||
|
finally:
|
||||||
|
session.close()
|
||||||
|
|
||||||
|
|
||||||
class MockState(FunctionCallCrawlerState):
|
class MockState(FunctionCallCrawlerState):
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue