diff options
author | Andrew Godwin | 2022-11-09 22:29:33 -0700 |
---|---|---|
committer | Andrew Godwin | 2022-11-09 22:29:49 -0700 |
commit | 7746abbbb7700fa918450101bbc6d29ed9b4b608 (patch) | |
tree | 8768efd8201faa2fee18e5d3b46f33785002f5d6 /stator/management/commands | |
parent | 61c324508e62bb640b4526183d0837fc57d742c2 (diff) | |
download | takahe-7746abbbb7700fa918450101bbc6d29ed9b4b608.tar.gz takahe-7746abbbb7700fa918450101bbc6d29ed9b4b608.tar.bz2 takahe-7746abbbb7700fa918450101bbc6d29ed9b4b608.zip |
Most of the way through the stator refactor
Diffstat (limited to 'stator/management/commands')
-rw-r--r-- | stator/management/commands/__init__.py | 0 | ||||
-rw-r--r-- | stator/management/commands/runstator.py | 28 |
2 files changed, 28 insertions, 0 deletions
diff --git a/stator/management/commands/__init__.py b/stator/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stator/management/commands/__init__.py diff --git a/stator/management/commands/runstator.py b/stator/management/commands/runstator.py new file mode 100644 index 0000000..1307fef --- /dev/null +++ b/stator/management/commands/runstator.py @@ -0,0 +1,28 @@ +from typing import List, Type, cast + +from asgiref.sync import async_to_sync +from django.apps import apps +from django.core.management.base import BaseCommand + +from stator.models import StatorModel +from stator.runner import StatorRunner + + +class Command(BaseCommand): + help = "Runs a Stator runner for a short period" + + def add_arguments(self, parser): + parser.add_argument("model_labels", nargs="*", type=str) + + def handle(self, model_labels: List[str], *args, **options): + # Resolve the models list into names + models = cast( + List[Type[StatorModel]], + [apps.get_model(label) for label in model_labels], + ) + if not models: + models = StatorModel.subclasses + print("Running for models: " + " ".join(m._meta.label_lower for m in models)) + # Run a runner + runner = StatorRunner(models) + async_to_sync(runner.run)() |