---
url: "https://vueda.dev/v3/reference/api/py/vueda.vdq.schedulers.md"
title: "vdq.schedulers"
---

# vdq.schedulers

## Overview

Scheduling utilities for creating and queuing VDQ email and SMS queue items.

## `add_abstract_email` {#add_abstract_email}

Create one email queue item per recipient across ``to``, ``cc``, and ``bcc``, without scheduling them for
sending. Raises ``ValueError`` if the sender or any recipient has no email address.

### Signature {#add_abstract_email-signature}

`add_abstract_email(sender, to, subject, text, origin, html, cc, bcc, reply_to, attachments)`

#### Parameters {#add_abstract_email-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="add_abstract_email-param-sender">sender</span> | `vueda.vdq.models.BaseSender` | yes |  |  |
| <span id="add_abstract_email-param-to">to</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver]` | yes |  |  |
| <span id="add_abstract_email-param-subject">subject</span> | `str` | yes |  |  |
| <span id="add_abstract_email-param-text">text</span> | `str` | yes |  |  |
| <span id="add_abstract_email-param-origin">origin</span> | `vueda.vdq.models.QueueItemOrigin \| None` | no | `None` |  |
| <span id="add_abstract_email-param-html">html</span> | `str \| None` | no | `None` |  |
| <span id="add_abstract_email-param-cc">cc</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver] \| None` | no | `None` |  |
| <span id="add_abstract_email-param-bcc">bcc</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver] \| None` | no | `None` |  |
| <span id="add_abstract_email-param-reply_to">reply_to</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver] \| None` | no | `None` |  |
| <span id="add_abstract_email-param-attachments">attachments</span> | `dict[str, dict[str, typing.Any]] \| collections.abc.Sequence[vueda.vdq.models.AbstractQueueItemAttachment] \| None` | no | `None` |  |

### Source {#add_abstract_email-source}

`server/vueda/vdq/schedulers.py:111`

## `add_email` {#add_email}

Create one email queue item per recipient across ``to``, ``cc``, and ``bcc``, and schedule sending after
the transaction commits. Returns the created queue items.

### Signature {#add_email-signature}

`add_email(sender, to, subject, text, origin, html, cc, bcc, reply_to, attachments)`

#### Parameters {#add_email-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="add_email-param-sender">sender</span> | `vueda.vdq.models.BaseSender` | yes |  |  |
| <span id="add_email-param-to">to</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver]` | yes |  |  |
| <span id="add_email-param-subject">subject</span> | `str` | yes |  |  |
| <span id="add_email-param-text">text</span> | `str` | yes |  |  |
| <span id="add_email-param-origin">origin</span> | `vueda.vdq.models.QueueItemOrigin \| None` | no | `None` |  |
| <span id="add_email-param-html">html</span> | `str \| None` | no | `None` |  |
| <span id="add_email-param-cc">cc</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver] \| None` | no | `None` |  |
| <span id="add_email-param-bcc">bcc</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver] \| None` | no | `None` |  |
| <span id="add_email-param-reply_to">reply_to</span> | `collections.abc.Sequence[vueda.vdq.models.BaseReceiver] \| None` | no | `None` |  |
| <span id="add_email-param-attachments">attachments</span> | `dict[str, dict[str, typing.Any]] \| collections.abc.Sequence[vueda.vdq.models.AnyMailQueueItemAttachment] \| None` | no | `None` |  |

### Source {#add_email-source}

`server/vueda/vdq/schedulers.py:151`

## `add_sms` {#add_sms}

Create an SMS queue item and schedule sending after the transaction commits. Raises ``ValueError`` if
either role has no cell phone number.

### Signature {#add_sms-signature}

`add_sms(sender, receiver, body)`

#### Parameters {#add_sms-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="add_sms-param-sender">sender</span> |  | yes |  |  |
| <span id="add_sms-param-receiver">receiver</span> |  | yes |  |  |
| <span id="add_sms-param-body">body</span> |  | yes |  |  |

### Source {#add_sms-source}

`server/vueda/vdq/schedulers.py:186`

## `schedule_queue_item` {#schedule_queue_item}

Publish the send task once the current transaction commits. A broker failure at publish time moves the
queue item to ``errored`` with the exception in ``result``.

### Signature {#schedule_queue_item-signature}

`schedule_queue_item(queue_item)`

#### Parameters {#schedule_queue_item-parameters}

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="schedule_queue_item-param-queue_item">queue_item</span> | `vueda.vdq.models.QueueItem` | yes |  |  |

### Source {#schedule_queue_item-source}

`server/vueda/vdq/schedulers.py:35`

## Source

`server/vueda/vdq/schedulers.py`
