36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
---
|
|
title: Queuing long-running tasks
|
|
date: 2024-07-17
|
|
permalink: daily/2024/07/17/queuing-long-running-tasks
|
|
tags:
|
|
- software-development
|
|
- drupal
|
|
cta: ~
|
|
snippet: |
|
|
Do you have long-running tasks in your application? Have you tried using queues?
|
|
---
|
|
|
|
Do you have long-running or performance-heavy tasks in your application?
|
|
|
|
What about performing complex actions when a user completes a task, such as submitting a form?
|
|
|
|
What if the action took several seconds or minutes to complete?
|
|
|
|
The user would assume their submission failed and may either leave or submit the form again and cause duplicate submissions.
|
|
|
|
Instead, maybe use a queue.
|
|
|
|
When the user submits the form, all you need to do is create a queue item for that submission and let the form submit as normal.
|
|
|
|
In the background, the queue items will be processed when they can take more time or memory to perform the tasks and without blocking the user - giving them a better experience.
|
|
|
|
Drupal supports queues by default, storing queue items in its database.
|
|
|
|
For an example, see the [Private Message Queue module][0] on Drupal.org.
|
|
|
|
I wrote it for a client project to use queues when sending private messages to event attendees, which could be hundreds per event.
|
|
|
|
Without a queue, the request would have taken a long time to complete, or likely timed out.
|
|
|
|
[0]: https://www.drupal.org/project/private_message_queue
|