> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/guardrails/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/guardrails/_mcp/server.

# nemoguardrails.guardrails.async_work_queue

## Module Contents

### Classes

| Name                                                                           | Description                                                                |
| ------------------------------------------------------------------------------ | -------------------------------------------------------------------------- |
| [`AsyncWorkQueue`](#nemoguardrails-guardrails-async_work_queue-AsyncWorkQueue) | Async Work Queue with static concurrency and queue size                    |
| [`WorkItem`](#nemoguardrails-guardrails-async_work_queue-WorkItem)             | Dataclass with async function, args, kwargs, and a future to return result |

### Data

[`T`](#nemoguardrails-guardrails-async_work_queue-T)

[`log`](#nemoguardrails-guardrails-async_work_queue-log)

### API

```python
class nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue(
    name: str,
    max_queue_size: int,
    max_concurrency: int,
    reject_on_full: bool = False
)
```

**Bases:** `Generic[T]`

Async Work Queue with static concurrency and queue size

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.__aenter__()
```

async

Context manager (used for testing rather than long-lived instance)

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.__aexit__(
    exc_type,
    exc_val,
    exc_tb
)
```

async

Context manager (used for testing rather than long-lived instance)

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue._worker_loop() -> None
```

async

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.is_busy() -> bool
```

Returns True if any worker is currently executing a task.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.is_queue_empty() -> bool
```

Returns True if the queue has zero pending items.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.is_queue_full() -> bool
```

Returns True if the queue is currently full.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.num_busy_workers() -> int
```

Returns the number of workers currently executing a task.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.num_pending() -> int
```

Number of items buffered in the queue, waiting for a worker.
Pairs with :meth:`num_busy_workers` — together they cover the two states a
WorkItem can be in.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.start() -> None
```

async

Starts the worker pool. Call this during service startup.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.stop(
    wait_for_completion: bool = True
) -> None
```

async

Stops the worker pool. Call this during service shutdown.

```python
nemoguardrails.guardrails.async_work_queue.AsyncWorkQueue.submit(
    func: typing.Callable[..., typing.Awaitable[nemoguardrails.guardrails.async_work_queue.T]],
    args: typing.Any = (),
    kwargs: typing.Any = {}
) -> nemoguardrails.guardrails.async_work_queue.T
```

async

Submit a task.
If queue is full:

* self.\_reject\_on\_full=True  -> Raises asyncio.QueueFull
* self.\_reject\_on\_full=False -> Blocks caller until slot opens

Note: Automatically starts the queue on first submission (lazy initialization).

```python
class nemoguardrails.guardrails.async_work_queue.WorkItem(
    func: typing.Callable[..., typing.Awaitable[nemoguardrails.guardrails.async_work_queue.T]],
    args: typing.Tuple[typing.Any, ...],
    kwargs: typing.Dict[str, typing.Any],
    future: asyncio.Future[nemoguardrails.guardrails.async_work_queue.T]
)
```

Dataclass

**Bases:** `Generic[T]`

Dataclass with async function, args, kwargs, and a future to return result

```python
nemoguardrails.guardrails.async_work_queue.T = TypeVar('T')
```

```python
nemoguardrails.guardrails.async_work_queue.log = logging.getLogger(__name__)
```