diff options
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)() |