Support async for listener

This commit is contained in:
Luke Van Seters
2021-11-09 11:51:43 -05:00
parent e0d6919039
commit 7b60488f76
4 changed files with 47 additions and 46 deletions

23
cli.py
View File

@@ -1,10 +1,8 @@
import asyncio
import os
import signal
from functools import wraps
import click
from mev_inspect.concurrency import coro
from mev_inspect.db import get_inspect_session, get_trace_session
from mev_inspect.inspector import MEVInspector
@@ -16,25 +14,6 @@ def cli():
pass
def coro(f):
@wraps(f)
def wrapper(*args, **kwargs):
loop = asyncio.get_event_loop()
def cancel_task_callback():
for task in asyncio.all_tasks():
task.cancel()
for sig in (signal.SIGINT, signal.SIGTERM):
loop.add_signal_handler(sig, cancel_task_callback)
try:
loop.run_until_complete(f(*args, **kwargs))
finally:
loop.run_until_complete(loop.shutdown_asyncgens())
return wrapper
@cli.command()
@click.argument("block_number", type=int)
@click.option("--rpc", default=lambda: os.environ.get(RPC_URL_ENV, ""))