---
title: "\u0424\u043e\u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u2014 Dinext"
description: "\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043b\u0438 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435."
space: "Docs"
url: "https://docs.dinext.ru/docs/servisy-platformy/fonovye-zadaniya"
updated: "2026-07-09"
---

# Фоновые задания

## Назначение

Сервис обеспечивает выполнение длительных или отложенных операций в фоновом режиме. Включает очереди заданий , воркеры (bench worker), планировщик (scheduler_events) и настраиваемые запланированные задачи (Scheduled Job Type).

## Цели и задачи

- Выполнять тяжелые операции (отчеты, рассылки, синхронизация) без блокировки интерфейса.
- Планировать повторяющиеся задачи (ежедневно, еженедельно, по расписанию cron).
- Распределять нагрузку по очередям (short, default, long) с разными таймаутами.
- Запускать задания от имени администратора с контролем ошибок и логов.
- Обеспечивать отказоустойчивость за счет очередей и воркеров.

## Для кого

- Разработчики, вызывающие Dinext.enqueue и настраивающие хуки планировщика.
- Администраторы сервера, запускающие воркеры и планировщик.
- Пользователи, инициирующие длительные операции (массовая рассылка, выгрузка), которые выполняются в фоне.

## Основные понятия

- **Очередь (queue)** — именованная очередь заданий: short (300 с), default (300 с), long (1500 с); можно задавать свои очереди в конфиге.
- **Воркер (worker)** — процесс, обрабатывающий очередь: `bench worker --queue short|default|long` или несколько очередей.
- **Dinext.enqueue** — постановка метода в очередь: `Dinext.enqueue(method, queue='default', timeout=..., is_async=True, ...)` или `Dinext.enqueue_doc(doctype, name, method_name, ...)`.
- **Планировщик (scheduler)** — выполнение задач по расписанию: хуки hourly, daily, weekly, monthly, *_long, all, cron; либо Scheduled Job Type без хука.
- Задания выполняются от имени Administrator, если не указано иное.

## Основные сущности / объекты

- **background_jobs.py**, **scheduler.py** .
- Конфигурация воркеров: common_site_config.json `workers`; burst-режим воркера (`--burst`).

## Основные сценарии / процессов

### Постановка задания в очередь (разработчик)

1. В коде вызвать `Dinext.enqueue("path.to.method", queue="default", timeout=300, arg1=val1)` или `Dinext.enqueue_doc("тип документа", docname, "method_name", ...)`.
2. Метод будет выполнен воркером в указанной очереди; не блокирует текущий запрос.
3. При ошибке в задании проверить логи воркера и Error Log в системе.
4. Для длительных операций использовать очередь `long` и увеличить timeout в разумных пределах.

### Запуск воркеров (администратор)

1. Запустить воркер для очереди: `bench worker --queue default` (или short, long).
2. Для нескольких очередей: `bench worker --queue short,default`.
3. В production использовать systemd/supervisor для постоянной работы воркеров; при падении процесса перезапускать.
4. Планировщик обычно запускается через `bench schedule` или встроенный механизм bench; убедиться, что он активен для ежедневных/ежечасных задач.

### Планирование повторяющихся задач

1. В приложении зарегистрировать хук в hooks.py: `scheduler_events = { "hourly": ["app.module.hourly_task"], "daily": ["app.module.daily_task"] }`.
2. Либо создать Scheduled Job Type в системе и привязать метод без изменения кода приложения.
3. Задачи выполняются по расписанию; логи и ошибки смотреть в логах планировщика и Error Log.

## Правила и ограничения

- Без запущенных воркеров задания в очереди не выполняются; планировщик также зависит от процесса scheduler.
- Таймауты очередей ограничены (short/default 300 с, long 1500 с по умолчанию); очень длинные операции разбивать на шаги или увеличивать таймаут для своей очереди в конфиге.
- Задания выполняются от имени Administrator; при необходимости проверять права внутри метода для «виртуального» пользователя или передавать user в аргументах и использовать Dinext.set_user().

## Результаты / отчетность

- Выполненные фоновые операции (отчеты, рассылки, синхронизация).
- Логи воркеров и планировщика; Error Log при сбоях заданий.
- Мониторинг очередей (размер очереди, задержки) при наличии инструментов мониторинга.

## Типовые вопросы и ошибки (FAQ)

### Задание не выполняется

Проверьте: воркер запущен для нужной очереди (`bench worker --queue default`); метод указан верно и доступен (import path); в логах воркера нет ошибки. При использовании enqueue_doc убедитесь, что документ существует и метод вызывается корректно.

### Как выполнить задание синхронно (без очереди)?

Вызвать метод напрямую или использовать `Dinext.enqueue(..., is_async=False)` (тогда выполнится в том же процессе и может увеличить время ответа запроса). Для тяжелых операций предпочтительно оставлять is_async=True.

### Где смотреть расписание задач?

В коде приложений — hooks.py, ключ scheduler_events. В системе — список Scheduled Job Type (если используется). Документация Dinext описывает стандартные события: hourly, daily, weekly, monthly, cron.

## Связанные темы

- [Скрипты и расширения](/docs/servisy-platformy/skripty-i-rasshireniya)
- [Открытый API](/docs/servisy-platformy/otkrytyy-api)
- [Отказоустойчивость](/docs/servisy-platformy/otkazoustoychivost)
- [Мониторинг](/docs/servisy-platformy/monitoring)
