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

# concurrency_limits_v2

# `prefect.server.models.concurrency_limits_v2`

## Functions

### `emit_concurrency_limit_v2_created_event` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L17](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L17)</sup>

```python theme={null}
emit_concurrency_limit_v2_created_event(concurrency_limit: orm_models.ConcurrencyLimitV2) -> None
```

Emit an event when a global concurrency limit is created.

### `emit_concurrency_limit_v2_updated_event` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L27](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L27)</sup>

```python theme={null}
emit_concurrency_limit_v2_updated_event(concurrency_limit: orm_models.ConcurrencyLimitV2) -> None
```

Emit an event when a global concurrency limit is updated.

### `emit_concurrency_limit_v2_deleted_event` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L37](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L37)</sup>

```python theme={null}
emit_concurrency_limit_v2_deleted_event(concurrency_limit: orm_models.ConcurrencyLimitV2) -> None
```

Emit an event when a global concurrency limit is deleted.

### `active_slots_after_decay` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L47](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L47)</sup>

```python theme={null}
active_slots_after_decay(db: PrefectDBInterface) -> ColumnElement[float]
```

### `denied_slots_after_decay` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L59](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L59)</sup>

```python theme={null}
denied_slots_after_decay(db: PrefectDBInterface) -> ColumnElement[float]
```

Calculate denied\_slots after applying decay.

Denied slots decay at a rate of `slot_decay_per_second` per second if it's
greater than 0 (rate limits), otherwise for concurrency limits it decays at
a rate based on clamped `avg_slot_occupancy_seconds`.

The clamping matches the retry-after calculation to prevent denied\_slots from
accumulating when clients retry faster than the unclamped decay rate.

### `create_concurrency_limit` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L122](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L122)</sup>

```python theme={null}
create_concurrency_limit(db: PrefectDBInterface, session: AsyncSession, concurrency_limit: Union[schemas.actions.ConcurrencyLimitV2Create, schemas.core.ConcurrencyLimitV2]) -> orm_models.ConcurrencyLimitV2
```

### `read_concurrency_limit` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L140](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L140)</sup>

```python theme={null}
read_concurrency_limit(db: PrefectDBInterface, session: AsyncSession, concurrency_limit_id: Optional[UUID] = None, name: Optional[str] = None) -> Union[orm_models.ConcurrencyLimitV2, None]
```

### `read_all_concurrency_limits` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L160](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L160)</sup>

```python theme={null}
read_all_concurrency_limits(db: PrefectDBInterface, session: AsyncSession, limit: int, offset: int) -> Sequence[orm_models.ConcurrencyLimitV2]
```

### `update_concurrency_limit` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L178](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L178)</sup>

```python theme={null}
update_concurrency_limit(db: PrefectDBInterface, session: AsyncSession, concurrency_limit: schemas.actions.ConcurrencyLimitV2Update, concurrency_limit_id: Optional[UUID] = None, name: Optional[str] = None) -> bool
```

### `delete_concurrency_limit` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L212](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L212)</sup>

```python theme={null}
delete_concurrency_limit(db: PrefectDBInterface, session: AsyncSession, concurrency_limit_id: Optional[UUID] = None, name: Optional[str] = None) -> bool
```

### `bulk_read_concurrency_limits` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L239](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L239)</sup>

```python theme={null}
bulk_read_concurrency_limits(db: PrefectDBInterface, session: AsyncSession, names: List[str]) -> List[orm_models.ConcurrencyLimitV2]
```

### `bulk_increment_active_slots` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L254](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L254)</sup>

```python theme={null}
bulk_increment_active_slots(db: PrefectDBInterface, session: AsyncSession, concurrency_limit_ids: List[UUID], slots: int) -> bool
```

### `bulk_decrement_active_slots` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L283](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L283)</sup>

```python theme={null}
bulk_decrement_active_slots(db: PrefectDBInterface, session: AsyncSession, concurrency_limit_ids: List[UUID], slots: int, occupancy_seconds: Optional[float] = None) -> bool
```

### `bulk_update_denied_slots` <sup>[https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency\_limits\_v2.py#L331](https://github.com/PrefectHQ/prefect/blob/main/src/prefect/server/models/concurrency_limits_v2.py#L331)</sup>

```python theme={null}
bulk_update_denied_slots(db: PrefectDBInterface, session: AsyncSession, concurrency_limit_ids: List[UUID], slots: int) -> bool
```
