Я создаю службу для создания PDF-файла с помощью Agenda Job/Queue и хотите обновить свойства задания, т. е. status
,progress
, поскольку обработчик выполнил код для создания PDF-файла.
Пример:
Определение работы:
agenda.define('generatePdf', async (job) => {
const { unique_id, status, progress } = job.attrs.data;
...
await functionThatGeneratesThePDF(...);
...
});
Запуск рабочего процессора повестки дня:
agenda.start()
Создание/планирование задания:
let job = agenda.create('generatePdf', { status: "CREATED", progress: 0, unique_id: <unique_id> });
job.save()
Теперь, по мере выполнения задания, я хочу обновить state
и progress
, но нет никакого API, который позволил бы мне это сделать.
Я попытался использовать .unique
API, как было предложено здесь но проблемы с этим:
Я не могу обновить определенные свойства
data
, т.е.status
, так как это удалит все остальные свойства, т.е.unique_id
,progress
Я не могу использовать свойство, которое я указываю в уникальном свойстве данных задания.
agenda .create(job.attrs.name, {status : "COMPLETED"}) <---- can not use unique_id as the data. .unique({ "data.unique_id": job.attrs.data.unique_id }) .save();
Если кто-то еще столкнулся с этим или сделал что-то подобное, пожалуйста, укажите мне правильное направление. Спасибо.