diff --git a/source/_daily_emails/2024-07-17.md b/source/_daily_emails/2024-07-17.md new file mode 100644 index 000000000..51fb28c10 --- /dev/null +++ b/source/_daily_emails/2024-07-17.md @@ -0,0 +1,35 @@ +--- +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