> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# results

# `prefect.results`

## Functions

### `DEFAULT_STORAGE_KEY_FN` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L75](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L75)</sup>

```python theme={null}
DEFAULT_STORAGE_KEY_FN() -> str
```

### `aget_default_result_storage` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L163](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L163)</sup>

```python theme={null}
aget_default_result_storage() -> WritableFileSystem
```

Generate a default file system for result storage.

### `get_default_result_storage` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L209](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L209)</sup>

```python theme={null}
get_default_result_storage() -> WritableFileSystem
```

Generate a default file system for result storage.

### `aresolve_result_storage` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L257](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L257)</sup>

```python theme={null}
aresolve_result_storage(result_storage: ResultStorage | UUID | Path) -> WritableFileSystem
```

Resolve one of the valid `ResultStorage` input types into a saved block
document id and an instance of the block.

### `resolve_result_storage` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L294](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L294)</sup>

```python theme={null}
resolve_result_storage(result_storage: ResultStorage | UUID | Path) -> WritableFileSystem
```

Resolve one of the valid `ResultStorage` input types into a saved block
document id and an instance of the block.

### `resolve_serializer` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L329](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L329)</sup>

```python theme={null}
resolve_serializer(serializer: ResultSerializer) -> Serializer
```

Resolve one of the valid `ResultSerializer` input types into a serializer
instance.

### `get_or_create_default_task_scheduling_storage` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L345](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L345)</sup>

```python theme={null}
get_or_create_default_task_scheduling_storage() -> ResultStorage
```

Generate a default file system for background task parameter/result storage.

### `get_default_result_serializer` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L363](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L363)</sup>

```python theme={null}
get_default_result_serializer() -> Serializer
```

Generate a default file system for result storage.

### `get_default_persist_setting` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L371](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L371)</sup>

```python theme={null}
get_default_persist_setting() -> bool
```

Return the default option for result persistence.

### `get_default_persist_setting_for_tasks` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L379](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L379)</sup>

```python theme={null}
get_default_persist_setting_for_tasks() -> bool
```

Return the default option for result persistence for tasks.

### `should_persist_result` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L391](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L391)</sup>

```python theme={null}
should_persist_result() -> bool
```

Return the default option for result persistence determined by the current run context.

If there is no current run context, the value of `results.persist_by_default` on the
current settings will be returned.

### `default_cache` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L420](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L420)</sup>

```python theme={null}
default_cache() -> LRUCache[str, 'ResultRecord[Any]']
```

### `result_storage_discriminator` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L424](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L424)</sup>

```python theme={null}
result_storage_discriminator(x: Any) -> str
```

### `get_result_store` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1365](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1365)</sup>

```python theme={null}
get_result_store() -> ResultStore
```

Get the current result store.

## Classes

### `ResultStore` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L437](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L437)</sup>

Manages the storage and retrieval of results.

**Attributes:**

* `result_storage`: The storage for result records. If not provided, the default
  result storage will be used.
* `metadata_storage`: The storage for result record metadata. If not provided,
  the metadata will be stored alongside the results.
* `lock_manager`: The lock manager to use for locking result records. If not provided,
  the store cannot be used in transactions with the SERIALIZABLE isolation level.
* `cache_result_in_memory`: Whether to cache results in memory.
* `serializer`: The serializer to use for results.
* `storage_key_fn`: The function to generate storage keys.

**Methods:**

#### `aacquire_lock` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1269](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1269)</sup>

```python theme={null}
aacquire_lock(self, key: str, holder: str | None = None, timeout: float | None = None) -> bool
```

Acquire a lock for a result record.

**Args:**

* `key`: The key to acquire the lock for.
* `holder`: The holder of the lock. If not provided, a default holder based on the
  current host, process, and thread will be used.
* `timeout`: The timeout for the lock.

**Returns:**

* True if the lock was successfully acquired; False otherwise.

#### `acquire_lock` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1246](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1246)</sup>

```python theme={null}
acquire_lock(self, key: str, holder: str | None = None, timeout: float | None = None) -> bool
```

Acquire a lock for a result record.

**Args:**

* `key`: The key to acquire the lock for.
* `holder`: The holder of the lock. If not provided, a default holder based on the
  current host, process, and thread will be used.
* `timeout`: The timeout for the lock.

**Returns:**

* True if the lock was successfully acquired; False otherwise.

#### `aexists` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L786](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L786)</sup>

```python theme={null}
aexists(self, key: str) -> bool
```

Check if a result record exists in storage.

**Args:**

* `key`: The key to check for the existence of a result record.

**Returns:**

* True if the result record exists, False otherwise.

#### `apersist_result_record` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1213](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1213)</sup>

```python theme={null}
apersist_result_record(self, result_record: 'ResultRecord[Any]', holder: str | None = None) -> None
```

Persist a result record to storage.

**Args:**

* `result_record`: The result record to persist.

#### `aread` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L967](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L967)</sup>

```python theme={null}
aread(self, key: str, holder: str | None = None) -> 'ResultRecord[Any]'
```

Read a result record from storage.

**Args:**

* `key`: The key to read the result record from.
* `holder`: The holder of the lock if a lock was set on the record.

**Returns:**

* A result record.

#### `aupdate_for_flow` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L507](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L507)</sup>

```python theme={null}
aupdate_for_flow(self, flow: 'Flow[..., Any]') -> Self
```

Create a new result store for a flow with updated settings.

**Args:**

* `flow`: The flow to update the result store for.

**Returns:**

* An updated result store.

#### `aupdate_for_task` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L556](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L556)</sup>

```python theme={null}
aupdate_for_task(self: Self, task: 'Task[P, R]') -> Self
```

Create a new result store for a task.

**Args:**

* `task`: The task to update the result store for.

**Returns:**

* An updated result store.

#### `await_for_lock` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1353](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1353)</sup>

```python theme={null}
await_for_lock(self, key: str, timeout: float | None = None) -> bool
```

Wait for the corresponding transaction record to become free.

#### `awrite` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1049](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1049)</sup>

```python theme={null}
awrite(self, obj: Any, key: str | None = None, expiration: DateTime | None = None, holder: str | None = None) -> None
```

Write a result to storage.

**Args:**

* `key`: The key to write the result record to.
* `obj`: The object to write to storage.
* `expiration`: The expiration time for the result record.
* `holder`: The holder of the lock if a lock was set on the record.

#### `create_result_record` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L985](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L985)</sup>

```python theme={null}
create_result_record(self, obj: Any, key: str | None = None, expiration: DateTime | None = None) -> 'ResultRecord[Any]'
```

Create a result record.

**Args:**

* `key`: The key to create the result record for.
* `obj`: The object to create the result record for.
* `expiration`: The expiration time for the result record.

#### `exists` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L774](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L774)</sup>

```python theme={null}
exists(self, key: str) -> bool
```

Check if a result record exists in storage.

**Args:**

* `key`: The key to check for the existence of a result record.

**Returns:**

* True if the result record exists, False otherwise.

#### `generate_default_holder` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L664](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L664)</sup>

```python theme={null}
generate_default_holder() -> str
```

Generate a default holder string using hostname, PID, and thread ID.

**Returns:**

* A unique identifier string.

#### `is_lock_holder` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1322](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1322)</sup>

```python theme={null}
is_lock_holder(self, key: str, holder: str | None = None) -> bool
```

Check if the current holder is the lock holder for the result record.

**Args:**

* `key`: The key to check the lock for.
* `holder`: The holder of the lock. If not provided, a default holder based on the
  current host, process, and thread will be used.

**Returns:**

* True if the current holder is the lock holder; False otherwise.

#### `is_locked` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1311](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1311)</sup>

```python theme={null}
is_locked(self, key: str) -> bool
```

Check if a result record is locked.

#### `persist_result_record` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1201](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1201)</sup>

```python theme={null}
persist_result_record(self, result_record: 'ResultRecord[Any]', holder: str | None = None) -> None
```

Persist a result record to storage.

**Args:**

* `result_record`: The result record to persist.

#### `read` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L949](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L949)</sup>

```python theme={null}
read(self, key: str, holder: str | None = None) -> 'ResultRecord[Any]'
```

Read a result record from storage.

**Args:**

* `key`: The key to read the result record from.
* `holder`: The holder of the lock if a lock was set on the record.

**Returns:**

* A result record.

#### `release_lock` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1293](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1293)</sup>

```python theme={null}
release_lock(self, key: str, holder: str | None = None) -> None
```

Release a lock for a result record.

**Args:**

* `key`: The key to release the lock for.
* `holder`: The holder of the lock. Must match the holder that acquired the lock.
  If not provided, a default holder based on the current host, process, and
  thread will be used.

#### `result_storage_block_id` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L471](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L471)</sup>

```python theme={null}
result_storage_block_id(self) -> UUID | None
```

#### `supports_isolation_level` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1227](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1227)</sup>

```python theme={null}
supports_isolation_level(self, level: 'IsolationLevel') -> bool
```

Check if the result store supports a given isolation level.

**Args:**

* `level`: The isolation level to check.

**Returns:**

* True if the isolation level is supported, False otherwise.

#### `update_for_flow` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L532](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L532)</sup>

```python theme={null}
update_for_flow(self, flow: 'Flow[..., Any]') -> Self
```

Create a new result store for a flow with updated settings.

**Args:**

* `flow`: The flow to update the result store for.

**Returns:**

* An updated result store.

#### `update_for_task` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L610](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L610)</sup>

```python theme={null}
update_for_task(self: Self, task: 'Task[P, R]') -> Self
```

Create a new result store for a task.

**Args:**

* `task`: The task to update the result store for.

**Returns:**

* An updated result store.

#### `wait_for_lock` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1342](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1342)</sup>

```python theme={null}
wait_for_lock(self, key: str, timeout: float | None = None) -> bool
```

Wait for the corresponding transaction record to become free.

#### `write` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1022](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/results.py#L1022)</sup>

```python theme={null}
write(self, obj: Any, key: str | None = None, expiration: DateTime | None = None, holder: str | None = None) -> None
```

Write a result to storage.

Handles the creation of a `ResultRecord` and its serialization to storage.

**Args:**

* `key`: The key to write the result record to.
* `obj`: The object to write to storage.
* `expiration`: The expiration time for the result record.
* `holder`: The holder of the lock if a lock was set on the record.
