Cluster · разработчикам
Call
Подготовленный вызов функции другого модуля. Не повторяет отправку после неизвестного результата запуска.
Все методы SDK · Типы и ошибки
Получение объекта
call = app.modules("dependency-id").function("status")call подготовлен через target.function(); перед poll() уже выполнен start(). Функция и её поля объявлены зависимостью.
__init__
Создаёт Call. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы. Параметр args сейчас не используется; передавай values.
def __init__(target: Module, function: str, values: dict[str, JSON] | None = None, args: JSON = None) -> None: ...Аргументы
target: Module, обязательный. Выбранный объект зависимости.function: str, обязательный. Имя функции, сигнала либо поля в выбранном объекте.values: dict[str, JSON] | None, по умолчаниюNone. Именованные JSON-аргументы объявленного обработчика по его схеме. None означает пустой словарь.args: JSON, по умолчаниюNone. Сейчас параметр принимается конструктором, но не используется. Передавай values или arguments(); позиционное отображение для Call не реализовано.
Результат
None. Создаёт Call. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Отдельного исключения SDK нет. Действуют обычные ошибки типов Python и ошибки переданных функций, если они используются.
Пример
# Обычный способ получения объекта:
call = app.modules("dependency-id").function("status")arguments
Дополняет аргументы до первой попытки запуска.
def arguments(**values: JSON) -> Self: ...Аргументы
values: JSON, произвольные именованные аргументы. Именованные JSON-аргументы объявленного обработчика по его схеме.
Результат
Self. Тот же объект после успешной операции. Дополняет аргументы до первой попытки запуска.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
ValueError('The call has already been started'): условие проверяется до продолжения операции.
Пример
call.arguments()start
Запускает функцию один раз и сохраняет ID запроса. После успеха повторный start() возвращает тот же объект.
async def start() -> Self: ...Аргументы
Нет.
Результат
Self. Тот же объект после успешной операции. Запускает функцию один раз и сохраняет ID запроса. После успеха повторный start() возвращает тот же объект.
Права
Нужны modules.call.
Ошибки
RuntimeError('The previous call outcome is unknown; it will not be sent again'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
result = await call.start()poll
Получает текущее состояние уже запущенного вызова, не ожидая завершения.
async def poll() -> dict[str, JSON]: ...Аргументы
Нет.
Результат
dict[str, JSON]. Получает текущее состояние уже запущенного вызова, не ожидая завершения.
Права
Нужны modules.call.
Ошибки
ValueError('Start the call before polling'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
result = await call.poll()wait
При необходимости запускает вызов и ожидает сигнал завершения от ядра до timeout. Готовый результат возвращается сразу, без обязательной паузы poll. failed и cancelled вызывают RuntimeError; TimeoutError не отменяет функцию у получателя. Права и состояние зависимости проверяются повторно перед выдачей результата.
async def wait(timeout: float = 30, poll: float = 0.1) -> JSON: ...Аргументы
timeout: float, по умолчанию30. Конечный положительный срок ожидания в секундах. Истечение не отменяет удалённое действие.poll: float, по умолчанию0.1. Конечный положительный срок одного ожидания ответа ядра, в секундах. Фактический срок ограничен десятью секундами. Готовый результат возвращается раньше.
Результат
JSON. Результат функции зависимости после проверки прав и состояния.
Права
Нужны modules.call.
Ошибки
RuntimeError(result['error'] or result['state']): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
- TimeoutError при истечении срока ожидания; задача или вызов у получателя может продолжаться. Не отправляй действие повторно без проверки состояния.
Пример
result = await call.wait()