Async command
This commit is contained in:
Родитель
11e515d2ad
Коммит
6424daf2f9
|
@ -1,4 +1,5 @@
|
|||
import argparse
|
||||
import asyncio
|
||||
import inspect
|
||||
from typing import Callable, Collection
|
||||
|
||||
|
@ -145,7 +146,10 @@ class CommandDefinition(object):
|
|||
logger.info(f'execute [{self.name}] -> {self.func}')
|
||||
|
||||
kwargs = {parameter: getattr(args, parameter) for parameter in self.signature.parameters}
|
||||
return self.func(**kwargs)
|
||||
if inspect.iscoroutinefunction(self.func):
|
||||
return asyncio.get_event_loop().run_until_complete(self.func(**kwargs))
|
||||
else:
|
||||
return self.func(**kwargs)
|
||||
|
||||
def setup(self, parser: argparse.ArgumentParser) -> None:
|
||||
parser.description = self.description
|
||||
|
|
|
@ -8,7 +8,7 @@ import colorama
|
|||
from a01.cli import cmd, arg
|
||||
from a01.output import output_in_table
|
||||
from a01.models import TaskCollection
|
||||
from a01.operations import query_tasks_by_run, query_run
|
||||
from a01.operations import query_tasks_by_run_async, query_run_async
|
||||
|
||||
|
||||
@cmd('get run', desc='Retrieve a run')
|
||||
|
@ -23,12 +23,13 @@ from a01.operations import query_tasks_by_run, query_run
|
|||
help='When download the recording files the files are arranged in directory structure mimic Azure CLI '
|
||||
'source code.')
|
||||
@arg('raw', help='For debug.')
|
||||
def get_run(run_id: str, log: bool = False, recording: bool = False, recording_az_mode: bool = False,
|
||||
async def get_run(run_id: str, log: bool = False, recording: bool = False, recording_az_mode: bool = False,
|
||||
show_all: bool = False, raw: bool = False) -> None:
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
tasks = TaskCollection(query_tasks_by_run(run_id), run_id)
|
||||
tasks = await query_tasks_by_run_async(run_id)
|
||||
tasks = TaskCollection(tasks, run_id)
|
||||
output_in_table(tasks.get_table_view(failed=not show_all), headers=tasks.get_table_header())
|
||||
output_in_table(tasks.get_summary(), tablefmt='plain')
|
||||
|
||||
|
@ -46,7 +47,7 @@ def get_run(run_id: str, log: bool = False, recording: bool = False, recording_a
|
|||
task.download_recording(recording_az_mode)
|
||||
|
||||
if raw:
|
||||
run = query_run(run_id=run_id)
|
||||
run = await query_run_async(run_id=run_id)
|
||||
print(json.dumps(run.to_dict(), indent=2))
|
||||
except ValueError as err:
|
||||
logger.error(err)
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# pylint: disable=unused-import
|
||||
from .query_tasks import query_tasks, query_tasks_by_run
|
||||
from .query_runs import query_run, query_runs
|
||||
from .query_tasks import query_tasks, query_tasks_by_run, query_tasks_by_run_async, query_tasks_async
|
||||
from .query_runs import query_run, query_runs, query_run_async, query_runs_async
|
||||
|
|
Загрузка…
Ссылка в новой задаче