Cache Validators
Cache validators are functions that determine if a task's output cache
is still valid, or whether that task should be re-run; they are provided at
Task creation via the cache_validator
keyword argument (for more information
on instantiating Tasks see the Task documentation).
Task caches are created at Task runtime if and only if the cache_for
keyword
argument is provided to the Task, that specifies how long the output cache will be valid for
after its creation. Cache validators come into play when a cached Task is re-run,
and are used to determine whether to re-run the Task or use the cache.
Note that all validators take into account cache expiration.
A cache validator returns True
if the cache is still valid, and False
otherwise.
Functions
top-level functions: |
prefect.engine.cache_validators.never_use (state, inputs, parameters) [source] |
Never uses the cache.
Args: state (State) : a Success state from the last successful Task run that contains the cache inputs (dict) : a dict of inputs that were available on the last successful run of the cached Task parameters (dict) : a dict of parameters that were available on the last successful run of the cached Task Returns: - boolean specifying whether or not the cache should be used
|
prefect.engine.cache_validators.duration_only (state, inputs, parameters) [source] |
Validates the cache based only on cache expiration.
Args: state (State) : a Success state from the last successful Task run that contains the cache inputs (dict) : a dict of inputs that were available on the last successful run of the cached Task parameters (dict) : a dict of parameters that were available on the last successful run of the cached Task Returns: - boolean specifying whether or not the cache should be used
|
|
Validates the cache based on cache expiration and all inputs that were provided on the last successful run.
Args: state (State) : a Success state from the last successful Task run that contains the cache inputs (dict) : a dict of inputs that were available on the last successful run of the cached Task parameters (dict) : a dict of parameters that were available on the last successful run of the cached Task Returns: - boolean specifying whether or not the cache should be used
|
prefect.engine.cache_validators.all_parameters (state, inputs, parameters) [source] |
Validates the cache based on cache expiration and all parameters that were provided on the last successful run.
Args: state (State) : a Success state from the last successful Task run that contains the cache inputs (dict) : a dict of inputs that were available on the last successful run of the cached Task parameters (dict) : a dict of parameters that were available on the last successful run of the cached Task Returns: - boolean specifying whether or not the cache should be used
|
prefect.engine.cache_validators.partial_parameters_only (validate_on=None) [source] |
Validates the cache based on cache expiration and a subset of parameters (determined by the validate_on keyword) that were provided on the last successful run.
Args: validate_on (list) : a list of strings specifying the parameter names to validate against Returns: Callable : the actual validation function specifying whether or not the cache should be used Example:
from datetime import timedelta import pendulum from prefect import Flow, Parameter, task from prefect.engine.cache_validators import partial_parameters_only
@task(cache_for=timedelta(days=1), cache_validator=partial_parameters_only(validate_on=['nrows'])) def daily_db_refresh(nrows, runtime): pass
with Flow("My Flow") as f: nrows = Parameter("nrows", default=500) runtime = Parameter("runtime") db_state = daily_db_refresh(nrows, runtime)
state1 = f.run(parameters=dict(nrows=1000, runtime=pendulum.now('utc')))
state2 = f.run(parameters=dict(nrows=1000, runtime=pendulum.now('utc')))
state3 = f.run(parameters=dict(nrows=1000, runtime=pendulum.now('utc')), task_states={db_state: state1.result[db_state]})
|
|
Validates the cache based on cache expiration and a subset of inputs (determined by the validate_on keyword) that were provided on the last successful run.
Args: validate_on (list) : a list of strings specifying the input names to validate against Returns: Callable : the actual validation function specifying whether or not the cache should be used Example:
import random from datetime import timedelta from prefect import Flow, task from prefect.engine.cache_validators import partial_inputs_only
@task(cache_for=timedelta(days=1), cache_validator=partial_inputs_only(validate_on=['x', 'y'])) def add(x, y, as_string=False): if as_string: return '{0} + {1}'.format(x, y) return x + y
@task def rand_bool(): return random.random() > 0.5
with Flow("My Flow") as f: ans = add(1, 2, rand_bool())
state1 = f.run()
state2 = f.run()
state3 = f.run(task_states={ans: state1.result[ans]})
|
This documentation was auto-generated from commit bd9182e
on July 31, 2024 at 18:02 UTC