88 lines
3.4 KiB
YAML
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: { }
|