uuid: - value: 4640cfe1-e531-48ab-8fb3-42655a77d667 langcode: - value: en type: - target_id: daily_email target_type: node_type target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7 revision_timestamp: - value: '2025-05-11T09:00:10+00:00' revision_uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 revision_log: { } status: - value: true uid: - target_type: user target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849 title: - value: 'Queuing long-running tasks' created: - value: '2024-07-17T00:00:00+00:00' changed: - value: '2025-05-11T09:00:10+00:00' promote: - value: false sticky: - value: false default_langcode: - value: true revision_translation_affected: - value: true path: - alias: /daily/2024/07/17/queuing-long-running-tasks langcode: en body: - value: |
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 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.
format: full_html processed: |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 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.
summary: null field_daily_email_cta: { }