oliverdavies.uk/content/node.4640cfe1-e531-48ab-8fb3-42655a77d667.yml

88 lines
3.4 KiB
YAML

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: |
<p>Do you have long-running or performance-heavy tasks in your application?</p>
<p>What about performing complex actions when a user completes a task, such as submitting a form?</p>
<p>What if the action took several seconds or minutes to complete?</p>
<p>The user would assume their submission failed and may either leave or submit the form again and cause duplicate submissions.</p>
<p>Instead, maybe use a queue.</p>
<p>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.</p>
<p>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.</p>
<p>Drupal supports queues by default, storing queue items in its database.</p>
<p>For an example, see the <a href="https://www.drupal.org/project/private_message_queue">Private Message Queue module</a> on Drupal.org.</p>
<p>I wrote it for a client project to use queues when sending private messages to event attendees, which could be hundreds per event.</p>
<p>Without a queue, the request would have taken a long time to complete, or likely timed out.</p>
format: full_html
processed: |
<p>Do you have long-running or performance-heavy tasks in your application?</p>
<p>What about performing complex actions when a user completes a task, such as submitting a form?</p>
<p>What if the action took several seconds or minutes to complete?</p>
<p>The user would assume their submission failed and may either leave or submit the form again and cause duplicate submissions.</p>
<p>Instead, maybe use a queue.</p>
<p>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.</p>
<p>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.</p>
<p>Drupal supports queues by default, storing queue items in its database.</p>
<p>For an example, see the <a href="https://www.drupal.org/project/private_message_queue">Private Message Queue module</a> on Drupal.org.</p>
<p>I wrote it for a client project to use queues when sending private messages to event attendees, which could be hundreds per event.</p>
<p>Without a queue, the request would have taken a long time to complete, or likely timed out.</p>
summary: null
field_daily_email_cta: { }