I see the motivation, but does it have to look so bad?

The subclass will look like this:

class SchedulerJobRunnerLinearTIScan(SchedulerJobRunner):
    def __init__(
        self,
        job: Job,
        num_runs: int = conf.getint("scheduler", "num_runs"),
        scheduler_idle_sleep_time: float = conf.getfloat("scheduler", 
"scheduler_idle_sleep_time"),
        log: Logger | None = None,
    ):
        super().__init__(
            job=job,
            num_runs=num_runs,
            scheduler_idle_sleep_time=scheduler_idle_sleep_time,
            log=log,
        )
        self.task_selector = TASK_SELECTORS[LINEAR_SCAN_SELECTOR]

The super class will use the injected hard-coded task selector.

Can't we introduce a configuration hierarchy like `core.internal` and put there 
things *not* exposed to the end user? So we don't have to do this weird 
subclassing?

It will look thus:

class SchedulerJobRunner(...):
    task_selector_type = conf.get("scheduler.internal", 
"task_selector_strategy")
    self.task_selector = TASK_SELECTORS[task_selector_type]

We'd just like to have an internal toggle as an implementation detail, which 
won't be undocumented and custom implementations *won't* be supported. It's 
just more convenient and straightforward.

Mb there's another way of internal settings management I missed?


On Tuesday, September 16th, 2025 at 11:34 AM, Ash Berlin-Taylor 
<a...@apache.org> wrote:

> > On 16 Sep 2025, at 08:58, asquator asqua...@proton.me wrote:
> > 
> > Yes, exposing pluggable features means fixing an API, which is confining 
> > and just hard to do given the current implementation
> 
> 
> 
> class MyScheduler:
> def execute(self):
> while True:
> # Do what ever you want.
> 
> `airflow scheduler --impl=my.module.MyScheduler`
> 
> That is the API.
> 
> That is as pluggable as we need it to be.
> 
> Everything can be built on top of that, including if you want it, a pluggable 
> task selection mechanisms.
> 
> Airflow already has too many config options and ways of tuning behaviour. We 
> need less of them, not more.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
For additional commands, e-mail: dev-h...@airflow.apache.org

Reply via email to