Skip to content

Removing jobs

Source URL: https://docs.bullmq.io/guide/jobs/removing-job

Sometimes it is necessary to remove a job. For example, there could be a job that has bad data.

{% tabs %} {% tab title=“TypeScript” %}

import { Queue } from 'bullmq';
const queue = new Queue('paint');
const job = await queue.add('wall', { color: 1 });
await job.remove();

{% endtab %}

{% tab title=“Python” %}

from bullmq import Queue
queue = Queue('paint')
job = await queue.add('wall', {'color': 1})
await job.remove()

{% endtab %} {% endtabs %}

{% hint style=“warning” %} Locked jobs (in active state) can not be removed. An error will be thrown. {% endhint %}

There are 2 possible cases:

  1. There are not pending dependencies; in this case the parent is moved to wait status, we may try to process this job.
  2. There are pending dependencies; in this case the parent is kept in waiting-children status.

{% hint style=“info” %} Take into consideration that processed values will be kept in processed hset from the parent if this child is in completed state at the time when it’s removed. {% endhint %}

We may try to remove all its pending descendants first.

{% hint style=“warning” %} If any of the children are locked, the deletion process will be stopped. {% endhint %}